I had make an Button Style as DataTemplate in a ResourceDictionary. Here a small part:
<Style TargetType="{x:Type Button}">
<Setter Property="Focusable" Value="False"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border">
...
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="Background" TargetName="border" Value="Red" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
In this Template a have a binding to a Propertie IsSelected. This Propertie is in one situation there and in a other not.
Is it possible to Check in Xaml if the binding path exist, then use it in other case forget it?
Now i had BindingExpression in the Debug output and i want to eliminate this.
The more pertinent question is: why do you have a
DataTriggerin yourControlTemplate? This creates a dependency between the control and its data context, which is why you’re experiencing this issue when your data context does not match the control template’s expectations.Are you certain you cannot use a more suitable mechanism? For example, could you instead use a style for those buttons where
IsSelectedshould affect theBackground?Or, even better, could you define a data template for the specific data class you have that has the
IsSelectedproperty? This data template could automatically use the correctButtonstyle.