无法通过ViewModel设置颜色获取

时间:2013-04-24 06:05:11

标签: 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">
  <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>

这里当我使用属性myColor为标签设置背景颜色时,它工作正常但是当我在ListView中做同样的事情时,它无法正常工作。

我错过了什么。请建议。

1 个答案:

答案 0 :(得分:0)

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

我使用了以下代码 -

<Border.Background>
  <SolidColorBrush
    Color="{Binding Path=DataContext.myColor, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Grid}}}">
  </SolidColorBrush>
</Border.Background>

我正在成功获得该物业。