मैं ContentControl पर "टेक्स्ट संरेखण" लागू करने का प्रयास कर रहा हूं। चूंकि ContentControl में टेक्स्टब्लॉक जैसी क्षैतिज या ऊर्ध्वाधर टेक्स्ट संरेखण प्रॉपर्टी नहीं है, इसलिए मैं ContentControl की क्षैतिज सामग्री अटलांटमेंट प्रॉपर्टी का उपयोग करने का प्रयास कर रहा हूं।क्षैतिज सामग्री का उपयोग कर सामग्री नियंत्रण के साथ टेक्स्ट संरेखित करें
मेरी समस्या यह है कि मैं इसे ContentControl के साथ काम करने के लिए नहीं मिल सकता।
मेरे उदाहरण में, मेरे पास "हैलो वर्ल्ड" प्रदर्शित करने वाला एक सामग्री नियंत्रण है और "इसे बदलें" प्रदर्शित करने वाला एक बटन है।
जब मैं बटन पर क्लिक करता हूं, तो मैंने सामग्री नियंत्रण और बटन पर क्षैतिज सामग्री संरेखण सेट किया है। बटन की सामग्री बदलती है, लेकिन सामग्री नियंत्रण की सामग्री नहीं होती है। यहाँ
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ContentControl x:Name="ctrl" Width="525">
Hello World!
</ContentControl>
<Button x:Name="btn" Grid.Row="1" Content="Change It" Click="btn_Click"/>
</Grid>
</Window>
और बटन क्लिक करें घटना के लिए मेरे VB.NET कोड है:
यहाँ मेरी XAML कोड है मैं के लिए पाठ ब्लॉक के साथ मेरी सामग्री नियंत्रण को बदलने के लिए असमर्थ हूँ
Class MainWindow
Private Sub btn_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
If (ctrl.HorizontalContentAlignment = HorizontalAlignment.Left) Then
ctrl.HorizontalContentAlignment = HorizontalAlignment.Right
btn.HorizontalContentAlignment = Windows.HorizontalAlignment.Right
Else
ctrl.HorizontalContentAlignment = HorizontalAlignment.Left
btn.HorizontalContentAlignment = Windows.HorizontalAlignment.Left
End If
ctrl.UpdateLayout()
End Sub
End Class
विभिन्न कारणों से, लेकिन मुझे अभी भी सामग्री को संरेखित करने में सक्षम होना चाहिए।
संपादित करें:
जबकि Narohi सुझाव काम करता है चारों ओर काम करते हैं, मैं अभी भी क्यों सामग्री नियंत्रण के HorizontalContentAlignment संपत्ति सामग्री संरेखित नहीं है उलझन में हूँ।
मैंने लेबल नियंत्रण (जो ContentControl से विरासत में मिला है) की कोशिश की और यह क्षैतिज सामग्री अटलांटमेंट संपत्ति सामग्री को ठीक से संरेखित करती है।
(संपादित करें फिर से: मैं अब इस बारे में उलझन में हूँ, ऐसा लगता है कि HorizontalContentAlignment सभी मामलों में ठीक से उपयोग नहीं किया जाता है।)
यहाँ है मेरी अद्यतन XAML कोड:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ControlTemplate x:Key="AlignmentAwareControl" TargetType="ContentControl">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</ControlTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ContentControl x:Name="ctrlTxt" Grid.Row="0"
Template="{StaticResource AlignmentAwareControl}"
HorizontalContentAlignment="Center" Padding="0">Hello World Content Control!</ContentControl>
<Label x:Name="ctrl" Grid.Row="1" HorizontalContentAlignment="Center" Padding="0">Hello World Label!</Label>
<ContentControl x:Name="ctrlImg" Grid.Row="2"
Template="{StaticResource AlignmentAwareControl}"
HorizontalContentAlignment="Center">
<Image Source="C:\Users\Frinavale\Pictures\Business_Woman.jpg"/>
</ContentControl>
<Button x:Name="btn" Grid.Row="3" Content="Change It" Click="btn_Click"/>
</Grid>
</Window>
यहाँ मेरे अद्यतन VB.NET कोड है:
Class MainWindow
Private Sub btn_Click(sender As System.Object, e As System.Windows.RoutedEventArgs)
If (ctrl.HorizontalContentAlignment = HorizontalAlignment.Left) Then
ctrlImg.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Right)
ctrlTxt.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Right)
ctrl.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Right)
btn.HorizontalContentAlignment = Windows.HorizontalAlignment.Right
Else
ctrlImg.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Left)
ctrlTxt.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Left)
ctrl.SetValue(ContentControl.HorizontalContentAlignmentProperty, Windows.HorizontalAlignment.Left)
btn.HorizontalContentAlignment = Windows.HorizontalAlignment.Left
End If
ctrl.UpdateLayout()
End Sub
End Class
मैं आगे आपकी सलाह के लिए देख रहा हूँ,
-फ्रिनी
क्या आप सामग्री नियंत्रण में टेक्स्टब्लॉक डाल सकते हैं? –