私の問題:
DataGrid
コマンドにバインドされたボタン付きのXceed列があります(その部分は機能します)- 現在の特定の値に応じて、ボタンを有効/無効にしたいと考えています
DataRow
。 - これまでのところ、コマンドのバインド作業または使用するものに
DataTrigger
応じてのいずれかを取得できますが、DataContext
両方を同時に取得することはできません。
私は次のコードで立ち往生しています:
<xcdg:Column FieldName="OpenInPiWebIdentifier"
Title="PiWeb Report"
VisiblePosition="6">
<xcdg:Column.CellContentTemplate>
<DataTemplate>
<Button DataContext="{Binding RelativeSource={RelativeSource Self}, Path=(xcdg:DataGridControl.ParentDataGridControl).DataContext}"
Content="Open PiWeb"
Command="{Binding OpenPiWebCommand}"
CommandParameter="{Binding DataContext.ResultData/PiWebReport, Mode=OneWay, RelativeSource={RelativeSource Self}}">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding PiWebReport}"
Value="{x:Null}">
<Setter Property="IsEnabled"
Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</xcdg:Column.CellContentTemplate>
</xcdg:Column>
そして、コマンドのビュー モデルの実装:
public ICommand OpenPiWebCommand
{
get
{
return _OpenPiWebCommand;
}
set
{
if (value != _OpenPiWebCommand)
{
_OpenPiWebCommand = value;
OnPropertyChanged("OpenPiWebCommand");
}
}
}
private ICommand _OpenPiWebCommand;
コンストラクターで、コマンドを初期化します。
OpenPiWebCommand = new RelayCommand(new Action<object>(OpenPiWeb));
プロパティPiWebReport
はクラスに属しResultDataV1
ます。すべてのデータは、列/行としてResultData = new ObservableCollection<ResultDataV1>();
表示されるこのプロパティに入れられます。DataGrid
したがって、使用するコンテキストに応じて、プロパティ値PiWebReport
またはコマンドのいずれかにアクセスできるようになりましたが、同時に両方にアクセスすることはできません。
データクラス:
public class ResultDataV1
{
public ResultDataV1(long dataId, DateTime dateTime, DateTime? endDateTime, string partId, string scanId, bool measurementNotVolumejoin, string piWebReport, FileInfo volumeFileInfo, FileInfo volumeVglFileInfo, DirectoryInfo volumeDirectoryInfo, string inspectionPlanName, string paletteName, AutomationStateEnum? automationState);
public AutomationStateEnum? AutomationState { get; }
public long DataId { get; }
public DateTime DateTime { get; }
public DateTime? EndDateTime { get; }
public string InspectionPlanName { get; }
public bool MeasurementNotVolumejoin { get; }
public string PaletteName { get; }
public string PartId { get; }
public string PiWebReport { get; }
public string ScanId { get; }
public List<SubResultDataV1> SubResults { get; }
public DirectoryInfo VolumeDirectoryInfo { get; }
public FileInfo VolumeFileInfo { get; }
public FileInfo VolumeVglFileInfo { get; }
}