2012-04-19 87 views
1

这不是为我工作如何将DataContext设置为XAML中的静态属性?

<UserControl x:Class="BenchmarkPlus.PMT.UI.Views.Circle" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" x:Name="root" 
      DataContext="{Binding Source={x:Static Brushes.Blue}}"> 
    <UserControl.Resources> 
     <Style TargetType="Ellipse"> 
      <Setter Property="Fill" Value="{Binding DataContext}" /> 
     </Style> 
    </UserControl.Resources> 
    <Grid> 
     <Ellipse Stroke="Black"></Ellipse> 
    </Grid> 
</UserControl> 

enter image description here

回答

4

让它简单地DataContext="{x:Static Brushes.Blue}"并改变Value="{Binding DataContext}"Value="{Binding}"

当您在绑定表达式中指定路径时,它总是相对于您的DataContext,所以当您使用{Binding DataContext}时,实际上您绑定的是DataContext.DataContext,这不是您想要的。

+0

感谢。我知道它必须是简单的东西。但是我只需要更改绑定部分,DataContext值可以任何方式工作 – 2012-04-19 23:24:39

1

我想你想

<UserControl x:Class="BenchmarkPlus.PMT.UI.Views.Circle" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300" x:Name="root" 
      DataContext="{x:Static Brushes.Blue}"> 
    <UserControl.Resources> 
     <Style TargetType="Ellipse"> 
      <Setter Property="Fill" Value="{Binding}" /> 
     </Style> 
    </UserControl.Resources> 
    <Grid> 
     <Ellipse Stroke="Black"></Ellipse> 
    </Grid> 
</UserControl> 
相关问题