我有一個WPF datagrid,我創建了一個ControlTemplate,用於表示bool?
類型的複選框。 我想爲複選框/控制模板爲只讀到用戶,但可以改變數值如何在WPF/MVVM中只讀控件模板(對於複選框)?
這裏是模板:
<ControlTemplate x:Key="checkboxTemplate" TargetType="CheckBox">
<Grid Background="{TemplateBinding Background}" Height="{TemplateBinding Height}">
<Rectangle x:Name="r" Height="10" Width="40" HorizontalAlignment="Center" VerticalAlignment="Center" RadiusX="4" RadiusY="4"></Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="CheckBox.IsChecked" Value="True">
<Setter Property="Fill" Value="#FF66D660" TargetName="r"></Setter>
</Trigger>
<Trigger Property="CheckBox.IsChecked" Value="False">
<Setter Property="Fill" Value="#FFD50005" TargetName="r"></Setter>
</Trigger>
<Trigger Property="CheckBox.IsChecked" Value="{x:Null}">
<Setter Property="Fill" Value="SlateGray" TargetName="r"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
這裏的DataGrid中實現:
<DataGridTemplateColumn SortMemberPath="IsReady" Header="Ready" CanUserSort="True" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsReady, Mode=OneWay}" HorizontalAlignment="Center" Template="{StaticResource checkboxTemplate}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
呦你希望你的CheckBox只是ReadOnly,但你希望用戶能夠改變它的Checked值?那麼爲什麼你只需要ReadOnly?只是爲了風格? – Rachel
@Rachel:只讀給用戶,可從代碼編輯。 –
@jberger我以爲你是OP,因此根據你的評論張貼了一個答案。現在意識到你不是,所以回答可能不適用於他的情況。 – Rachel