WPF XamNumericEditor绑定到Slider

时间:2014-10-23 11:49:00

标签: c# wpf binding infragistics

我有一个XamNumeric编辑器和一个Slider来减轻百分比输入。

问题是,只要用户使用滑块更改值,编辑器中的旋转按钮就会被禁用

我有以下xaml:

<InfragisticsWpf:XamNumericEditor x:Name="PercentEditor"
    Value="{Binding Percent, Mode=TwoWay}"                        
    ValueType="{x:Type System:Decimal}"
    Mask="nnn %"
    SpinButtonDisplayMode="Always">
    <InfragisticsWpf:XamNumericEditor.ValueConstraint>
        <InfragisticsWpf:ValueConstraint MinInclusive="0" MaxInclusive="100"/>
    </InfragisticsWpf:XamNumericEditor.ValueConstraint>
</InfragisticsWpf:XamNumericEditor>
<Slider 
    Value="{Binding ElementName=PercentEditor, Path=Value, Mode=TwoWay, Converter={StaticResource DoubleToDecimalConverter}}" 
    Minimum="0" 
    Maximum="100"                        
    IsSnapToTickEnabled="True" 
    VerticalContentAlignment="Center"
    VerticalAlignment="Center"
    TickFrequency="5">                      
</Slider>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

进一步调试我找到了解决方案。 XamNumericEditor的问题在于,在其他控件的绑定上,它在可见值的末尾设置了carret poistion(在我的情况下为%),这就是旋转按钮不起作用的原因。为了解决这个问题,我添加了以下处理程序:

void NumericEditorOnGotFocus(object sender, RoutedEventArgs e)
{
	var numericEditor = sender as XamNumericEditor;

	if (numericEditor != null)
	{
		var text = numericEditor.Text;
		var numberMatch = Regex.Match(text, @"\d");
		if (numberMatch.Success)
		{
                    numericEditor.SelectionStart = numberMatch.Index;
		}
	}
}

我知道这不是最好的主意,因为我在后面的代码中添加了处理程序。我更愿意直接在Xaml文件中找到解决方案,但这解决了这个问题。