如何通过绑定设置静态资源的属性

时间:2012-11-26 16:45:19

标签: c# .net wpf

在下面的XAML片段中,为“testGrid”正确设置ItemsSource,但对于“testGridResource”,它为null。如何通过绑定将网格的ItemsSource设置为资源?更一般地说,如何通过绑定设置定义为静态资源的对象的属性(我在我的应用程序中仅使用datagrid作为示例,我正在使用其他对象)?

<Window x:Class="StackedBarTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ig="http://schemas.infragistics.com/xaml"
    Title="MainWindow" Height="350" Width="525" x:Name="root">
<Window.Resources>
    <DataGrid x:Key="testGridResource" ItemsSource="{Binding LoadStatistics, ElementName=root}"></DataGrid>
</Window.Resources>

<Grid x:Name="LayoutRoot">
    <DataGrid x:Name="testGrid" ItemsSource="{Binding LoadStatistics, ElementName=root}"></DataGrid>

3 个答案:

答案 0 :(得分:0)

请参阅这是否有助于回答您的问题:Binding to static properties

答案 1 :(得分:0)

所以你只想将你的DataGrid绑定到testGrid资源,如果是这样,这应该可以工作

<DataGrid x:Name="testGrid" ItemsSource="{Binding Source={StaticResource testGridResource}}">

不确定这是否是你想要的

也许这个:

<DataGrid x:Name="testGridResource" ItemsSource="{Binding Path=LoadStatistics, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}

答案 2 :(得分:0)

基本上,答案是:如果资源未在xaml中使用,则不会对其进行解析,因此作为绑定目标的属性将显示为null。所以上面发布的绑定都是正确的,但是因为资源从未在xaml中使用过,所以它从未被解析过,因此ItemSource显示为null。

请看这个链接:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7aed2cbf-1980-4f3d-8354-83227662f428