我有一個組合框標記如下。如何通過抵消它將組合框綁定到實際值以外的值?
<ComboBox SelectedIndex="{Binding Path=Bonkey}">
<ComboBoxItem Content="Monkey" />
<ComboBoxItem Content="Donkey" />
</ComboBox>
我結合到具有Bonkey字段類型爲整數對象,根據下面的聲明。
class Thingy
{
public int Bonkey {get; set; }
...
}
雖然它的偉大工程和假設,有一個編程技術問題讓我徹夜難眠。在手動標記中生成的索引是0和1.但是,我知道整數的值將是1和2.(即猴子與組合框項目相關時索引爲0,但它是組合框項目中的實際值用作數據源的對象是1.類似地,Monkey在組合框的項目中具有索引1,但它對應於對象中的2)。
我的中間解決方案是在構造函數中立即敲掉1設置數據上下文,然後在處理視圖時加1。它的工作,但我不能真正引以自豪,可以這麼說。
public SomeDialog(Thingy thingy)
{
InitializeComponent();
thingy.Bonkey--;
DataContext = thingy;
}
...
private void Cancel_Click(object sender, RoutedEventArgs eventArgs)
{
DialogResult = false;
DataContext.Bonkey++;
Close();
}
...
private void Submit_Click(object sender, RoutedEventArgs eventArgs)
{
DataContext.Bonkey++;
...
}
我該怎麼做更多,好...不恥?
- 我找不到任何屬性來顯式設置組合框中項目的索引。
- 我試過使用轉換器,但不知何故,我要麼在組合框(沒有預先選擇)或一些奇怪的錯誤消息告訴我,我做了一個噓聲(因爲我甚至不知道如果這是一個好方法,我會放手)。
- 谷歌搜索給出了一堆結果,沒有一個給我清晰的如何抵消價值的界限(雖然說實話,我懷疑我可能會用太怪異的關鍵詞,因爲看起來這樣的問題一定是'以前討論過)。
創建自定義的'IValueConverter',可以通過靜態值在兩個方向上偏移值,比如在'ConverterParameter'中傳遞 – dkozl
@dkozl所以,基本上,選項#2?我想我可以再試一次。這可能是我的大腦越來越疲憊,我的精神過早放棄。您可能希望將其作爲回覆發佈,以便我可以接受它作爲答案,如果我能夠使用它。 –
它應該適用於轉換器。也許如果你會發布你的轉換器,我們將能夠告訴你什麼是錯的 – dkozl