我有一个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>
有什么想法吗?
答案 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文件中找到解决方案,但这解决了这个问题。