如何将布尔值绑定到 DataTemplate

How to bind booleans to DataTemplate

我的 RadGridView 有这个带有绑定的 DataTemplate:

<DataTemplate x:Key="StatusTemplate">
    <local:StatusIndicator Style="{StaticResource StatusIndicator}" IsEnabled="{Binding}" />
</DataTemplate>

我像这样在我的 GridViewDataColumn 上使用它,我在其中绑定来自 ItemsSource:

的布尔值
<telerik:GridViewDataColumn DataMemberBinding="{Binding Enabled}" CellTemplate="{StaticResource StatusTemplate}" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Connected}" CellTemplate="{StaticResource StatusTemplate}" />

但是分配给 DataMemberBindingEnabledConnected 属性不起作用,

恐怕您无法对两列使用相同的 DataTemplate。绑定路径不能 "injected" 到 XAML 中的模板中,这意味着需要创建一个唯一的 DataTemplate,每个列都有特定的绑定路径:

<telerik:GridViewDataColumn DataMemberBinding="{Binding Enabled}">
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <local:StatusIndicator Style="{StaticResource StatusIndicator}" IsEnabled="{Binding Enabled}" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Connected}">
    <telerik:GridViewDataColumn.CellTemplate>
        <DataTemplate>
            <local:StatusIndicator Style="{StaticResource StatusIndicator}" IsEnabled="{Binding Connected}" />
        </DataTemplate>
    </telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>

如果 DataTemplate 更复杂,您可以考虑创建模板并以编程方式替换绑定路径: