Явное добавление привязки к шаблону данных для ListViewItem
не будет работать, если вы не используете шаблон данных.В этом случае вам нужно, чтобы стиль работал, и чтобы он работал, вам нужно знать, почему он не работает.
Что плохого в вашем стиле, так это то, что вы назначилиключ к этому.При создании любого элемента WPF ищет в словаре ресурсов объект Style
, ключ которого является типом этого элемента.Если он находит один, это стиль, который он применяет.Если это не так, стиль не применяется.
Если вы задаете TargetType
в объявлении стиля, но пропускаете x:Key
, ключ, который назначается при добавлении в словарь ресурсов, относится к этому типу.Но так как вы явно указали ключ для своего стиля, это ключ, который назначается вместо этого.Таким образом, WPF никогда не находит его, и он не применяется.
Поскольку вы не хотите глобально добавлять этот стиль к каждому ListViewItem
в своем окне, вероятно, нужно добавить его ксловарь ресурсов ListView
:
<ListView ItemsSource="{DynamicResource Data}">
<ListView.Resources>
<local:SexToColorConverter x:Key="SexConverter" />
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background"
Value="{Binding Path=Sex, Converter={StaticResource SexConverter}}" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Sex"
DisplayMemberBinding="{Binding Sex}" />
</GridView>
</ListView.View>
</ListView>