通过XAML访问/设置代码隐藏的自定义文本属性

时间:2014-08-29 06:45:10

标签: c# wpf xaml

在解决所有DP问题时遇到了一些麻烦我已经重新创建了一个非常简单的问题版本,试图解决问题所在。唉,我还是难过......

我有一个自定义的userControl,并且我试图通过实例化该控件的页面设置文本块的属性。目前,在下面的这个版本中,作为一种教学自己的手段,我只是试图从后面的代码访问一个属性。

我希望设置自定义文本属性等的原因是因为我希望页面上有多个版本的控件,其中包含自定义行为/文本等。

这是我背后的代码。

 public partial class FeedbackCtrl : UserControl
{
    public bool IsFlagSet
    {
        get { return (bool)GetValue(IsFlagSetProperty); }
        set { SetValue(IsFlagSetProperty, value); }
    }
    public static readonly DependencyProperty IsFlagSetProperty =
        DependencyProperty.Register("IsFlagSet", typeof(bool), typeof(FeedbackCtrl), new PropertyMetadata(false));

    public FeedbackCtrl()
    {
        InitializeComponent();
        this.DataContext = this;
    }
}

我的XAML ..

<UserControl x:Class="Pipeline_General.Custom_Controls.FeedbackCtrl" x:Name="ThisCtrl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Expander HorizontalAlignment="Stretch" >
        <Expander.Header Name="Header">
            <Grid HorizontalAlignment="Stretch" Width="NaN">
                <Border Background="Transparent" HorizontalAlignment="Stretch" BorderBrush="gray" BorderThickness="0,0,0,1"
                        Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=ActualWidth}">
                    <TextBlock Foreground="#FFFF72D2" Text="{Binding Path=IsFlagSet}">
                    </TextBlock>
                </Border>
            </Grid>
        </Expander.Header>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="30" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <ScrollViewer Grid.Row="1">
                <StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="5"/>
            </ScrollViewer>
        </Grid>
    </Expander>
</Grid>

0 个答案:

没有答案