Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何绑定到ResourceDictionary中的控件元素_Wpf_Binding_Resourcedictionary - Fatal编程技术网

Wpf 如何绑定到ResourceDictionary中的控件元素

Wpf 如何绑定到ResourceDictionary中的控件元素,wpf,binding,resourcedictionary,Wpf,Binding,Resourcedictionary,我试图从WPF控件上的ResourceDictionary中引用该控件中的元素。下面是一个例子: <UserControl.Resources> <ResourceDictionary> <Behaviors:GridViewInteractionModel x:Key="gridViewInteraction" GridView="{Binding ElementName=myGridView}"/> </ResourceDictionary&

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

<UserControl.Resources>
<ResourceDictionary>
    <Behaviors:GridViewInteractionModel x:Key="gridViewInteraction" GridView="{Binding ElementName=myGridView}"/>
</ResourceDictionary>
</UserControl.Resources>
...
<SomeGridView x:Name="myGridView"/>
有人知道如何将控件中的元素绑定到ResourceDictionary中资源的属性吗

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

(Resources["gridViewInteraction"] as GridViewInteractionModel).GridView = FindName("myGridView") as SomeGridView;
但这真的很难看(而且容易出错)


Thx.

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

<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”)


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

这也不完全是。。。该资源位于
资源字典
中。尝试使用
DynamicResource
会出现一个错误,即该对象需要是DependencyObject(但
GridViewInteractionModel
是一个
行为
对象)。
<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>