Я бы привязал свойство IsChecked флажка к значению в вашей модели представления и привязал ваш источник данных к этому же значению в модели представления.
В качестве альтернативы, привязка к ElementName работает в обоих случаях - попробуйте это:
<Window x:Class="TestLiveCharts.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
x:Name="UC">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<CheckBox x:Name="cbSample" Content="Hello" Grid.Row="0" />
<TextBlock HorizontalAlignment="Center" Margin="0,20,0,0" FontSize="48" Grid.Row="1">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="No" />
<Setter Property="Foreground" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cbSample, Path=IsChecked}" Value="True">
<Setter Property="Text" Value="Yes!" />
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<lvc:PieChart Grid.Row="2" x:Name="chart" Hoverable="True" HoverPushOut="6" >
<lvc:PieChart.Series>
<lvc:PieSeries Values="1" >
<lvc:PieSeries.Style>
<Style TargetType="lvc:PieSeries">
<Setter Property="StrokeThickness" Value="0"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=cbSample, Path=IsChecked}" Value="True">
<Setter Property="StrokeThickness" Value="10"/>
</DataTrigger>
</Style.Triggers>
</Style>
</lvc:PieSeries.Style>
</lvc:PieSeries>
<lvc:PieSeries Values="1" Fill="Green" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="Yellow" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="DarkCyan" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="Gray" StrokeThickness="0"/>
</lvc:PieChart.Series>
</lvc:PieChart>
</Grid>
Нажав на флажок, вы получите такой результат:
Или попробуйте привязать к viewmodel:
<Window x:Class="StackoverflowTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
x:Name="UC">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<CheckBox x:Name="cbSample" Content="Hello" Grid.Row="0" IsChecked="{Binding Checked}"/>
<TextBlock HorizontalAlignment="Center" Margin="0,20,0,0" FontSize="48" Grid.Row="1">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="No" />
<Setter Property="Foreground" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding Checked}" Value="True">
<Setter Property="Text" Value="Yes!" />
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<lvc:PieChart Grid.Row="2" x:Name="chart" Hoverable="True" HoverPushOut="6" >
<lvc:PieChart.Series>
<lvc:PieSeries Values="1" >
<lvc:PieSeries.Style>
<Style TargetType="lvc:PieSeries">
<Setter Property="StrokeThickness" Value="0"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Checked}" Value="True">
<Setter Property="StrokeThickness" Value="10"/>
</DataTrigger>
</Style.Triggers>
</Style>
</lvc:PieSeries.Style>
</lvc:PieSeries>
<lvc:PieSeries Values="1" Fill="Green" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="Yellow" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="DarkCyan" StrokeThickness="0"/>
<lvc:PieSeries Values="1" Fill="Gray" StrokeThickness="0"/>
</lvc:PieChart.Series>
</lvc:PieChart>
</Grid>
using System.ComponentModel;
using System.Windows;
namespace StackoverflowTest
{
public partial class MainWindow : Window, INotifyPropertyChanged
{
bool _checked = true;
public bool Checked
{
get
{
return _checked;
}
set
{
_checked = value;
RaisePropertyChanged(nameof(Checked));
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}