滑块不会更新到最大值
问题描述:
我有一个绑定到滑块的文本框。滑块不会更新到最大值
<TextBox Text="{Binding ElementName=maxValue, Path=Value, UpdateSourceTrigger=LostFocus}" TextAlignment="Center" VerticalContentAlignment="Center" Width="30" Height="25" BorderBrush="Transparent" PreviewKeyDown="TextBox_PreviewKeyDown"></TextBox>
<Slider Value="{Binding TotalSize}" Maximum="{Binding MaxMaxBackupSize, Mode=TwoWay}" Minimum="{Binding MinBackupSize}" TickPlacement="BottomRight" TickFrequency="2" IsSnapToTickEnabled="True" Name="maxValue"></Slider>
后用户选择的东西,我重新计算最大(MaxMaxBackupSize),因为它是绑定的属性,这应该更新文本框和滑块,但是,出于某种原因 - 只有文本框的值被改变,如果它高于最大值,则降至最大值。然而,滑块似乎保持原样,我仍然可以移动它,因为我想(这也改变文本框中的文字...
我有以下相关属性:
private int totalSize;
public int TotalSize
{
get { return totalSize; }
set
{
if (value == totalSize)
return;
totalSize = value;
ConfigChanged = true;
ChangeIni = true;
}
}
public static int MaxMaxBackupSize { get; set; }
public static int MinBackupSize { get; set; }
的更改用户按下后,正在取得一个杠杆是:
...
MaxMaxBackupSize = Convert.ToInt16(f/1000000000)
TotalSize = (TotalSize < MaxMaxBackupSize) ? TotalSize : MaxMaxBackupSize;
...
UPDATE0:(顺便说一句,我使用的是被称为Fody.OnPropertyChanged一个NuGet包,节省了我需要提高onpropertychanged - 所以这是不是这个原因)
更新:我应该清楚我在说什么时,我的意思是滑块不会改变 - 滑块不会改变,但滑块的最大值保持旧的最大值。假设在最大值是50之前,现在是20,如果滑块之前是30,那么它将移动到20,但是我仍然可以将它移动到50。我希望最大值被限制在20不确定是否可能。
UPDATE2:现在我找到了一个解决方法,来检查值大于该属性的最大做大,如果是的话它会弹出一个消息框,说这是不可能的,并返回。
答
这个问题似乎是静态的属性,因为NotifyPropertyChanged只能在一个实例调用,所以要使其工作,你就必须实现它作为一个静态的成员,具有非静态访问像
private static int _maxBackupSize;
public int MaxBackupSize
{
get { return _maxBackupSize; }
set { _maxBackupSize = value; <However your Framework raises the Event> }
}
现在你可以有一个非静态访问静态变量,它可以提高NotifyPropertyChanged事件
请提供一个最小的回购,当你问一个问题上的SO:https://stackoverflow.com/help/mcve – mm8
缺少什么?也许只是在用户选择一些东西之后所做的更改......我会添加它。 –
@Sameed阅读文章 - 我使用了一个特殊的包,它为我实现它,它的工作原理非常完美。这不是问题。 –