C# 无法设置通过ViewModel获取的颜色

C# 无法设置通过ViewModel获取的颜色,c#,wpf,C#,Wpf,我使用以下代码- <Label Grid.Row="0" Content="{Binding MyColor}"> <Label.Background> <SolidColorBrush Color="{Binding MyColor}"></SolidColorBrush> </Label.Background> </Label> <Grid Grid.Row="1" Grid.Column="0"

我使用以下代码-

<Label Grid.Row="0" Content="{Binding MyColor}">
  <Label.Background>
    <SolidColorBrush Color="{Binding MyColor}"></SolidColorBrush>
  </Label.Background>
</Label>

<Grid Grid.Row="1" Grid.Column="0">
  <ScrollViewer Name="MyScroll"
                Template="{DynamicResource MyScrollViewerControlTemplate}">
    <ListView Name="List1"
              BorderThickness="0"
              SelectedItem="{Binding Path=SelectedElement}"
              ItemsSource="{Binding Path=Elements}"
              Background="{StaticResource aColor}">

      <ListView.Resources>
        <ControlTemplate x:Key="SelectedTemplate"
                         TargetType="ListViewItem">
          <Border Cursor="Hand">
            <Border.Background>
              <SolidColorBrush Color="{Binding Path=myColor}">
              </SolidColorBrush>
            </Border.Background>
            <TextBlock Text="Test" />
          </Border>
        </ControlTemplate>
      </ListView.Resources>
    </ListView>
  </ScrollViewer>
</Grid>
<Border.Background>
  <SolidColorBrush
    Color="{Binding Path=DataContext.myColor, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}}}">
  </SolidColorBrush>
</Border.Background>

在这里,当我使用属性myColor设置标签的背景色时,它工作正常,但当我在ListView中执行相同操作时,它不工作


我错过了什么。请建议。

我找到了答案。我在ListView中将元素作为绑定源引用,它不能直接访问myColor属性。我需要在可视化树中搜索DataContext并需要引用它

我使用了以下代码-

<Label Grid.Row="0" Content="{Binding MyColor}">
  <Label.Background>
    <SolidColorBrush Color="{Binding MyColor}"></SolidColorBrush>
  </Label.Background>
</Label>

<Grid Grid.Row="1" Grid.Column="0">
  <ScrollViewer Name="MyScroll"
                Template="{DynamicResource MyScrollViewerControlTemplate}">
    <ListView Name="List1"
              BorderThickness="0"
              SelectedItem="{Binding Path=SelectedElement}"
              ItemsSource="{Binding Path=Elements}"
              Background="{StaticResource aColor}">

      <ListView.Resources>
        <ControlTemplate x:Key="SelectedTemplate"
                         TargetType="ListViewItem">
          <Border Cursor="Hand">
            <Border.Background>
              <SolidColorBrush Color="{Binding Path=myColor}">
              </SolidColorBrush>
            </Border.Background>
            <TextBlock Text="Test" />
          </Border>
        </ControlTemplate>
      </ListView.Resources>
    </ListView>
  </ScrollViewer>
</Grid>
<Border.Background>
  <SolidColorBrush
    Color="{Binding Path=DataContext.myColor, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}}}">
  </SolidColorBrush>
</Border.Background>

而且我正在成功地获得财产