C# 如何从另一个字段屏蔽WPF Infragistics NumericField
我有一个需要屏蔽的字段,但屏蔽格式可能因实际记录而异。该表包含规范记录,每种类型的规范可能具有不同的精度。我无法在Xaml代码中设置此精度 我尝试了以下方法:C# 如何从另一个字段屏蔽WPF Infragistics NumericField,c#,wpf,xaml,infragistics,masking,C#,Wpf,Xaml,Infragistics,Masking,我有一个需要屏蔽的字段,但屏蔽格式可能因实际记录而异。该表包含规范记录,每种类型的规范可能具有不同的精度。我无法在Xaml代码中设置此精度 我尝试了以下方法: <inf:NumericField Name="ResultQty" Label="Test Results" Width="100" HorizontalContentAlignment="Center" Mask="{Binding Fo
<inf:NumericField Name="ResultQty" Label="Test Results" Width="100" HorizontalContentAlignment="Center" Mask="{Binding FormatDesc}"/>
及
FormatDesc为此记录返回####,##0.000,结果质量为0.2720。它应显示为0.272,但显示为0.27
是否有办法将FormatDesc属性绑定到Xaml中的字段,或者我应该寻找其他方法?
XamDataGrid
中的字段不是WPF中的可视元素,因此
无法直接绑定到数据上下文,因为它们不公开数据上下文
继承自FrameworkElement
为了绑定
XamDataGrid
如字段
,字段设置
,或字段布局设置
,I
建议使用字段绑定
。您可以阅读关于FieldBinding
在XamDataGrid
中:
因此,建议在Infragistics网站上使用字段绑定
标记扩展,以便将属性绑定到字段
、字段设置
或字段布局设置
虽然上面提到的文章包含了使用MVVM模式的示例,但是
FieldBinding
标记扩展可以在没有它的情况下使用
例如,假设使用以下数据模型:
public class TestReportProvider : ObservableModel
{
public TestReportProvider()
{
}
public string QtyFormat { get; set; } = "###,##0.000";
private ObservableCollection<Test> _tests = null;
public ObservableCollection<Test> Tests
{
get
{
return this._tests;
}
set
{
if (this._tests != value)
{
this._tests = value;
this.OnPropertyChanged("Tests");
}
}
}
//…
}
public partial class FieldBindingExample : Window
{
public TestReportProvider ReportData = new TestReportProvider();
public FieldBindingExample()
{
InitializeComponent();
DataContext = ReportData;
}
//…
}
<Grid>
<igDP:XamDataGrid DataSource="{Binding Path=Tests}" AutoFit="True">
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False"
AutoFitMode="Always"
AddNewRecordLocation="OnTopFixed"/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.Fields>
<igDP:TextField Name="TestDescription" Label="Test Description" />
<igDP:NumericField Name="Result" Label="Result" />
<igDP:NumericField Name="Average" Label="Average Deviation"
Format="{igDP:FieldBinding QtyFormat}" />
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
</Grid>
现在为XamDataGrid
设置DataSource
,并使用FieldBinding
标记扩展名:
public class TestReportProvider : ObservableModel
{
public TestReportProvider()
{
}
public string QtyFormat { get; set; } = "###,##0.000";
private ObservableCollection<Test> _tests = null;
public ObservableCollection<Test> Tests
{
get
{
return this._tests;
}
set
{
if (this._tests != value)
{
this._tests = value;
this.OnPropertyChanged("Tests");
}
}
}
//…
}
public partial class FieldBindingExample : Window
{
public TestReportProvider ReportData = new TestReportProvider();
public FieldBindingExample()
{
InitializeComponent();
DataContext = ReportData;
}
//…
}
<Grid>
<igDP:XamDataGrid DataSource="{Binding Path=Tests}" AutoFit="True">
<igDP:XamDataGrid.FieldLayoutSettings>
<igDP:FieldLayoutSettings AutoGenerateFields="False"
AutoFitMode="Always"
AddNewRecordLocation="OnTopFixed"/>
</igDP:XamDataGrid.FieldLayoutSettings>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.Fields>
<igDP:TextField Name="TestDescription" Label="Test Description" />
<igDP:NumericField Name="Result" Label="Result" />
<igDP:NumericField Name="Average" Label="Average Deviation"
Format="{igDP:FieldBinding QtyFormat}" />
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
</Grid>
在调试器中运行应用程序并查看输出日志。可能存在类似于System.Windows.Data错误的消息:2:找不到目标元素的治理FrameworkElement或FrameworkContentElement…
?因此输出给出以下System.Windows.Data错误:2:找不到目标元素的治理FrameworkElement或FrameworkContentElement。BindingExpression:Path=SelectedIssue.contractsusespectdev.FailingTestResults.FormatDesc;DataItem=null;目标元素是'NumericField'(HashCode=53877781);目标属性为“格式”(类型为“字符串”)