我遇到了Slider控件值不符合綁定到的支持屬性值的問題。這是一個錯誤,還是我做錯了什麼?UWP C#/ XAML Slider值不支持綁定的支持屬性
XAML代碼:
<Slider x:Name="DefenseSlider" Width="220" StepFrequency="1"
Minimum="0"
Maximum="10"
Value="{Binding CharacterDefense, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
C#後盾代碼:
public int CharacterDefense
{
get { return NewCharacter.CharacterDefense; }
set
{
CalculateCharacterPointsRemaining();
if (value <= CharacterPointsAvailable)
{
NewCharacter.CharacterDefense = value;
}
if (value > CharacterPointsAvailable)
{
NewCharacter.CharacterDefense = CharacterPointsAvailable;
}
CalculateCharacterPointsRemaining();
}
}
如果它是一個錯誤,沒有人知道一個解決辦法,確保滑塊的值可以去沒有比高支持價值?
問候......
非常感謝您FO你的解釋。我之前設置了最大值,但遇到了一些挑戰,需要創建另一個支持屬性,這將結合當前點的數量加上可用的,我不願意做的。但是,現在您的答案爲我節省了繼續使用setter進行值綁定的時間。謝謝。一個問題,如果我可能會進一步打擾你......爲什麼將調度程序傳遞到VM通常是一個糟糕的主意? – RAB
@RAB將調度程序傳遞給視圖模型會使視圖模型的單元測試更加困難,並會創建對特定調度程序實現的依賴關係,從而限制代碼對其他平臺的可移植性。您可以通過在每個平臺上可能有不同實現的服務接口中包裝對調度程序的訪問來減輕這兩個問題,並且可以在單獨測試中沒有真正調度程序的情況下單獨執行調度程序。儘管如此,它會增加代碼的複雜性,所以如果可能的話,我會避免它。 –
請允許我再次感謝你。有一些複雜性,因爲OnPropertyChanged過早地關閉了值,所以我將它們全部放在它們自己的屏幕更新方法中並解決了問題。你的回答是最有幫助的! – RAB