【问题标题】:Binding to CustomControls issue绑定到 CustomControls 问题
【发布时间】:2012-01-01 21:02:56
【问题描述】:

我有一个从 TextBox 继承的自定义控件,它具有称为 State 的依赖属性。 状态是枚举,有 4 个选项 {Mismatch, Wait, Ok, None}

泛型如下所示:

<Style TargetType="{x:Type local:CustomTextBox}">
    <Style.Triggers>
        <Trigger Property="State" Value="Mismatch">
            <Setter Property="Background" Value="{StaticResource MismatchBrush}"/>
        </Trigger>
    </Style.Triggers>

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CustomTextBox}">
                <Border Background="{TemplateBinding Background}"
                        BorederBrush="{TemplateBinding BorederBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

我有一个名为 MyData 的类,其属性为 DataState、Sent、Recieved,每个属性都实现了 INotifyPropertyChanged。

在我的主窗口中,xaml 中有以下行:

<custom:CustomTextBox State="{Binding BindingData.DataState}" Text="{Binding BindedData.Sent}"/>

在我的视图模型中,我有来自 MyData 类型的字段,该字段称为 BindedData,当用户发送一些数据时,BindedData.Sent 会发生变化,然后如果发生某些逻辑,则 BindedData 状态会更改为 Mismatch,并且 customTextBox 背景需要采用某种颜色.

问题是背景没有改变意味着状态绑定不起作用,文本绑定也不起作用。

我知道绑定是如何工作的,以及它在其他情况下对我的工作(不使用自定义控件),在这里我还检查了调试,我看到一切正常,所以我对自定义控件有什么问题吗?

提前致谢!

【问题讨论】:

    标签: wpf xaml data-binding mvvm custom-controls


    【解决方案1】:

    也许您从主窗口再次设置背景? 我试过复制你的代码,它工作得很好,除非我从主窗口设置背景(因为它覆盖了样式设置器)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2012-09-02
      • 2018-01-03
      相关资源
      最近更新 更多