1

我试图从该控件的 ResourceDictionary 中引用我的 WPF 控件中的元素。这是一个例子:

<UserControl.Resources>
<ResourceDictionary>
    <Behaviors:GridViewInteractionModel x:Key="gridViewInteraction" GridView="{Binding ElementName=myGridView}"/>
</ResourceDictionary>
</UserControl.Resources>
...
<SomeGridView x:Name="myGridView"/>

GridView对象上的依赖属性的值GridViewInteractionModel应该是被SomeGridView调用的对象myGridView

上面的代码不起作用。 {Binding ElementName=myGridView}不绑定元素(GridViewInteractionModel永远不会调用 SetValue 函数)。

WPF 运行时错误是:

Cannot find source for binding with reference 'ElementName=myGridView'.
BindingExpression:(no path); DataItem=null; target element is 
'GridViewInteractionModel' (HashCode=15238415); target property is
'GridView' (type 'SomeGridView')

有谁知道如何让控件中的元素绑定到 ResourceDictionary 中资源的属性?

我发现获取属性集的唯一方法是在InitializeComponent()调用后在代码隐藏构造函数中手动设置它:

(Resources["gridViewInteraction"] as GridViewInteractionModel).GridView = FindName("myGridView") as SomeGridView;

但这真的很难看(而且容易出错)。

谢谢。

4

1 回答 1

0

不完全确定您要在这里实现什么。这是我如何处理列表视图及其子项的示例:

<Style x:Key="ListViewStyle" TargetType="ListView">
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFD3D1CF" Offset="0"/>
                <GradientStop Color="White" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
    <Setter Property="Effect">
        <Setter.Value>
            <DropShadowEffect Opacity="0.7"/>
        </Setter.Value>
    </Setter>
</Style>
<Style x:Key="ListViewItemStyle" TargetType="ListViewItem">
    <Setter Property="Background" Value="#FF494646"/>
    <Setter Property="Foreground" Value="#FFFDFAFA"/>
    <Setter Property="Height" Value="25"></Setter>
    <Setter Property="Cursor" Value="Hand"></Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="Black"/>
        </Trigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Foreground" Value="Black"/>
        </Trigger>
    </Style.Triggers>
</Style>


<ListView x:Name="lvwSettingsYears" x:Uid="lvwSettingsYears" Margin="10,77,10,50"
    Style="{DynamicResource ListViewStyle}"
    ItemContainerStyle="{DynamicResource ListViewItemStyle}"
    SelectionChanged="lvwYears_SelectionChanged">
    <ListView.View>
        <GridView>
            <GridViewColumn x:Name="SettingsYearListviewID" x:Uid="SettingsYearListviewID" DisplayMemberBinding="{Binding id}" Width="0"/>
            <GridViewColumn x:Name="SettingsYearListviewCode" x:Uid="SettingsYearListviewCode" Header="Code" DisplayMemberBinding="{Binding Code}" Width="100"/>
            <GridViewColumn x:Name="SettingsYearListviewDesc" x:Uid="SettingsYearListviewDesc" Header="Description" DisplayMemberBinding="{Binding Description}" Width="300"/>
        </GridView>
     </ListView.View>
 </ListView>

促使我发布此内容的原因是您的错误消息中提到目标属性是“GridView”(输入“SomeGridView”)

我认为它正在寻找控制类型。

于 2013-03-07T20:43:31.643 回答