這是一個很好的地方有一個View Model。 Here's another ViewModel link
我會做的就是在視圖模型(即得到由部件上的觀點勢必會)
綁定到該組合框的項目源的的IObservable屬性,您添加/刪除以下取決於數組的大小
所選索引綁定到組合框的SelectedElement的int屬性。當設置此屬性時,您將不得不從字符串轉換爲int。
綁定到textbox.text的字符串屬性(您可能在此使用一個標籤,由by),每次更改上述選定索引的int屬性時都會更新該屬性。
如果這一切混淆我可以建立一些僞代碼,但這三個屬性應該工作,並得到你想要的。
編輯 - 添加一些代碼:
public class YourViewModel : DependencyObject {
public string[] FictionArray {get; private set;}
public IObservable<string> AvailableIndices;
public static readonly DependencyProperty SelectedIndexProperty=
DependencyProperty.Register("SelectedIndex", typeof(string), typeof(YourViewModel), new PropertyMetadata((s,e) => {
var viewModel = (YourViewModel) s;
var index = Convert.ToInt32(e.NewValue);
if (index >= 0 && index < viewModel.FictionArray.Length)
viewModel.TextBoxText=FictionArray[index];
}));
public bool SelectedIndex {
get { return (bool)GetValue(SelectedIndexProperty); }
set { SetValue(SelectedIndexProperty, value); }
}
public static readonly DependencyProperty TextBoxTextProperty=
DependencyProperty.Register("TextBoxText", typeof(string), typeof(YourViewModel));
public bool TextBoxText {
get { return (bool)GetValue(TextBoxTextProperty); }
set { SetValue(TextBoxTextProperty, value); }
}
public YourViewModel(string[] fictionArray) {
FictionArray = fictionArray;
for (int i = 0; i < FictionArray.Length; i++){
AvailableIndices.Add(i.ToString()));
}
}
}
這是不完美的,但它應該給你一些想法你怎麼能創建,你可以綁定到性能視圖模型。因此,在您的XAML你會碰到這樣的:
<ComboBox ItemSource="{Binding AvailableIndices}" SelectedItem="{Binding SelectedIndex}"/>
<TextBox Text="{Binding TextBoxText}"/>
道歉仍沒有標明這個問題的回答。我陷入了一個完全不同的局面,但會回到這個問題上,並根據我最終使用的內容來標記它。 – Drakestar