【问题标题】:DataBinding Error and Changing only an elements DataContextDataBinding 错误并仅更改元素 DataContext
【发布时间】:2016-05-30 23:16:34
【问题描述】:

我有一个具有视图模型的视图。这一切都很好。但是,我只想将一个按钮的数据上下文更改为后面的代码,以便我可以利用 DataTrigger 并将其绑定到后面代码中的属性。这是按钮:

<telerik:RadButton DataContext="{Binding RelativeSource={RelativeSource Self}}" Grid.Column="9" Grid.Row="4" FontWeight="Bold" FontSize="20" Click="RadCapButton_Click">
                <telerik:RadButton.Content>
                    <Image Source="/TrainLoader;component/Images/UpArrow.png"/>
                </telerik:RadButton.Content>
                <telerik:RadButton.Style>
                    <Style TargetType="telerik:RadButton">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsCap}" Value="True">
                                <Setter Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="GhostWhite" Offset="0"/>
                                            <GradientStop Color="Yellow" Offset="0.5"/>
                                            <GradientStop Color="Yellow" Offset="0.5"/>
                                            <GradientStop Color="GhostWhite" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding IsCap}" Value="False">
                                <Setter Property="Background">
                                    <Setter.Value>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="GhostWhite" Offset="0"/>
                                            <GradientStop Color="Gray" Offset="0.5"/>
                                            <GradientStop Color="Gray" Offset="0.5"/>
                                            <GradientStop Color="GhostWhite" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </telerik:RadButton.Style>
            </telerik:RadButton>

如你所见,我已经设置了

DataContext="{Binding RelativeSource={RelativeSource Self}}"

在按钮中。我认为这应该绑定到正确的代码后面?

在我的 DataTrigger 中,我试图绑定到 IsCap 属性,如下所示:

&lt;DataTrigger Binding="{Binding IsCap}" Value="True"&gt;

但是,我收到了 DataBinding 错误:

System.Windows.Data Error: 40 : BindingExpression path error: 'IsCap' property not found on 'object' ''RadButton' (Name='')'. BindingExpression:Path=IsCap; DataItem='RadButton' (Name=''); target element is 'RadButton' (Name=''); target property is 'NoTarget' (type 'Object')

【问题讨论】:

    标签: wpf xaml data-binding binding


    【解决方案1】:

    我发现了我的问题。当我设置DataContext="{Binding RelativeSource={RelativeSource Self}}" 时出现了问题。这导致 Button 绑定到自身。我不得不使用DataContext="{Binding RelativeSource={RelativeSource AncestorType=UserControl}}",而不是使用前一行代码。这导致 datacontext 被设置为包含按钮的用户控件。这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2017-01-06
      • 2015-07-28
      • 1970-01-01
      • 2011-01-15
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多