2012-04-19 81 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> 
相關問題