在WPF中如何在UserControl中访问Window.Resources?

3

我有一个子UserControl,我无法访问其父UserControl的资源。 资源是CollectionViewSource,并且其源在父UserControl的代码后台中设置,该源设置为来自LINQ to SQL的查询结果。 两个UserControl在各自的xaml文件中定义。 我尝试使用DynamicResource,但它会抱怨说需要与DepenednecyProperty一起使用...

父UserControl

...
<UserControl.Resources>
    <CollectionViewSource x:Key="UsageTypeSource"/>
</UserControl.Resources>
...

子用户控件:


...
<ComboBox Height="28" HorizontalAlignment="Left" Margin="147,1,0,0" x:Name="cbxUsage"
          Grid.Column="1" Grid.Row="2" Width="186"
          SelectedItem="{Binding Path=UsageType, ValidatesOnExceptions=true, NotifyOnValidationError=true}"
          VerticalAlignment="Top" SelectedValuePath="ID"
          SelectedValue="{Binding Path=Usage}"
          ItemsSource="{Binding Source={StaticResource UsageTypeSource}}"
          DisplayMemberPath="Type"/>
...

我遇到的错误是“无法解析资源'UsageTypeSource'”,请问可以提供访问该资源的正确方法吗?谢谢! Ash

1
这与您的问题无关,但绑定SelectedItemSelectedValue真的有意义吗? - Clemens
@Clemens 在某些情况下确实会这样,我不确定具体是这种情况。 - Federico Berasategui
我最初使用了SelectedValue并忘记将其删除,感谢您指出。 - Ash
2个回答

2

试试这个:

ItemsSource="{DynamicResource UsageTypeSource}}"/> 

@Clemens并不是真的,他可能正在做{Binding Source={DynamicResource ..}}这是不允许的,因为Binding类的Source属性不是DP。 - Federico Berasategui

1

代替

<UserControl.Resources> ... </UserControl.Resources>

使用

<Control.Resources> ... </Control.Resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接