将StaticResource绑定到FrameworkElement的属性

时间:2011-12-11 19:00:35

标签: wpf data-binding

我正在尝试使用Petzold的LineChartGenerator(来自http://msdn.microsoft.com/en-us/magazine/ee291567.aspx),它作为StaticResource访问:

 <Window.Resources>
    <src:CensusData x:Key="censusData" />
    <charts:LineChartGenerator 
            x:Key="generator"
            ItemsSource="{Binding Source={StaticResource censusData}}"
            Width="300"
            Height="200">
        </charts:LineChartGenerator.VerticalAxis>
    </charts:LineChartGenerator>
</Window.Resources>

但我想将宽度和高度绑定到控件的当前宽度和高度。不应该这样:

 <charts:LineChartGenerator 
            x:Key="generator"
            ItemsSource="{Binding Source={StaticResource censusData}}"
            Width="{Binding ElementName=MyControl, Path=Width}"
            Height="200">

但是这给了我一个绑定错误:无法为目标元素找到管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径=宽度;的DataItem = NULL; target元素是'LineChartGenerator'(HashCode = 52313994); target属性是'Width'(类型'Double')

有可能这样做吗?我有各种各样的kludges,但他们都将控制的宽度设置为LineChartGenerator的宽度,这实际上不是理想的效果!

由于

安德鲁

1 个答案:

答案 0 :(得分:1)

我相信,因为你的width属性在Window.Resources标签中,所以宽度绑定应该看起来像这样......

Width="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
    AncestorType={x:Type Window}}, Path=ActualWidth}"