我尝试开始学习WPF,并且正在使用Telerik
所以我从this文章中的简单ComboBox开始,这是我的控件:

<telerik:RadComboBox Height="20" Width="200" ItemsSource="{Binding Source={StaticResource DataSource}, Path=Agency}"></telerik:RadComboBox>

我现在想做的是绑定(bind)一个对象,但首先要在XAML中声明一个资源(来自本文):
<UserControl.Resources>
    <example:AgencyViewModel x:Key="DataSource"/> // AgencyViewModel is a class
</UserControl.Resources>

所以我的问题是,在UserControl之后,我没有选项Resources,我尝试将其放入控件中,因此我很高兴了解它在WPF中的工作方式

最佳答案

您必须在与ComboBox相关的父控件上设置 DataContext 依赖项属性。然后,所有(逻辑)子代都继承DataContext。然后,您可以绑定(bind)到DataContext依赖项属性所引用的对象的属性。您可以通过使用 StaticResource标记扩展结构引用资源的 x:Key 来做到这一点。

<UserControl>
  <UserControl.Resources>
    <example:AgencyViewModel x:Key="DataSource"/> // AgencyViewModel is a class
  </UserControl.Resources>

  <Grid DataContext="{StaticResource DataSource}">

    <telerik:RadComboBox Height="20" Width="200"
        ItemsSource="{Binding ItemsCollectionDefinedInViewModel}" />

  </Grid>
</UserControl>

您也可以按照本文中的操作进行操作,而无需设置DataContext,而是设置绑定(bind)显式的
ItemsSource="{Binding Source={StaticResource DataSource}, Path=Agency}"

关于c# - WPF UserControl.Resources引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27694855/

10-14 16:34