Wpf datagrid命令属性中的按钮
我有一个带有以下XAML的DataGrid。首先,网格内的按钮没有蓝色样式,其次,当按下按钮时,Command属性不起作用,但OnClick起作用。在视图模型中,我使用了RelayCommand实现,它与其他控件配合良好,只有DataGrid中的按钮似乎有问题Wpf datagrid命令属性中的按钮,wpf,mvvm,datagrid,Wpf,Mvvm,Datagrid,我有一个带有以下XAML的DataGrid。首先,网格内的按钮没有蓝色样式,其次,当按下按钮时,Command属性不起作用,但OnClick起作用。在视图模型中,我使用了RelayCommand实现,它与其他控件配合良好,只有DataGrid中的按钮似乎有问题 <DataGrid x:Name="dgEntities" Width="650" Height="239" Margin="40,-48,65,-8" ItemsSource="{Bind
<DataGrid
x:Name="dgEntities"
Width="650"
Height="239"
Margin="40,-48,65,-8"
ItemsSource="{Binding JobEntities}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Margin="5"
Content="{Binding TaskDetails[0].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
Command="{Binding HypelinkCommand}"
CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
Cursor="Hand"
Click="Button_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Button.Template>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Name="chkHeaderExtract" Checked="ChkHeaderExtract_OnChecked" Unchecked="ChkHeaderExtract_OnUnchecked"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkExtract" IsChecked="{Binding TaskDetails[0].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Margin="5"
Content="{Binding TaskDetails[1].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
Command="{Binding HypelinkCommand}"
CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
Cursor="Hand">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Button.Template>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Name="chkHeaderTransform" Checked="ChkHeaderTransform_OnChecked" Unchecked="ChkHeaderTransform_OnUnchecked"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkTransform" IsChecked="{Binding TaskDetails[1].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Status">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button
Margin="5"
Content="{Binding TaskDetails[2].Status,Mode=TwoWay,NotifyOnTargetUpdated=True}"
Command="{Binding HypelinkCommand}"
CommandParameter="{Binding ElementName=dgEntities,Path=SelectedItem}"
Cursor="Hand"
Foreground="Blue">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock TextDecorations="Underline">
<ContentPresenter />
</TextBlock>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Name="chkHeaderLoad" Checked="ChkHeaderLoad_OnChecked" Unchecked="ChkHeaderLoad_OnUnchecked"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkLoad" IsChecked="{Binding TaskDetails[2].IsSelected,Mode=TwoWay,NotifyOnTargetUpdated=True}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding EntityName}" Header="Entity" Width="150"/>
</DataGrid.Columns>
</DataGrid>
代码作为注释发布,而不是更新到原始帖子
private RelayCommand<object> _hyperlinkInstance;
public ICommand HypelinkCommand
{
get
{
if(_hyperlinkInstance==null)
_hyperlinkInstance = new RelayCommand<object>(openDialog);
return _hyperlinkInstance;
}
}
private void openDialog(object obj)
{
JobConfigurationResults results = obj as JobConfigurationResults;
jeresult = JobEntities.SingleOrDefault(
x => x.JobEntityId == results.JobEntityId);
}
HypelinkCommand是否与TaskDetails对应的视图模型是每个DaraGrid行后面的视图模型?你说没有蓝色的发型是什么意思?这是否意味着按钮文本不会变为蓝色?是的,Hyperlink命令与TaskDetails的视图模型相同。蓝色样式意味着,由于我将setter属性值设置为蓝色,我希望按钮看起来像超链接,但它显示为黑色字体。HypelinkCommand或HyperLinkCommand?你能给出定义或属性吗?你试过“嘿,dkozl,是的,它是HypelinkCommand.”。。我刚刚从视图模型复制并粘贴了ICommand实现。