次の関数listView_SelectionChanged
をコードビハインドから離れて、直接ViewModel
(またはXAMLとして直接)内で処理しようとしています。そして、私は誰かがこれを実装する方法についてもっと良いアイデアを持っていることを期待していました。ListBoxを使用してMVVMを使用してTextBoxを移動する
TextBoxには、セクションが含まれています。 [Secion1]
とナビゲートするのに役立ちます私はの側面にすべてのセクションのリストを含むListBoxを持っています。セクションの1つをクリックすると、自動的にテキストのその部分にジャンプします。
コードは、現在、このようなものになります。コードビハインド
XAML
ListBox ItemsSource="{Binding Path=Sections}" Name="listBox"
SelectionMode="Single" Width="170"
DisplayMemberPath="Section"
SelectionChanged="listView_SelectionChanged"/>
<TextBox Name="TextBox1" Text="{Binding Path=Source}"/>
モデル
public class SourceData
{
public SourceData()
{
Sections = new List<SectionData>();
}
public String Source { get; set; }
public List<SectionData> Sections { get; set; }
}
public class SectionData
{
public int Line { get; set; } // Line of the Section
public String Section { get; set; } // Section name (e.g. [Section1]
}
を
private void listView_SelectionChanged(object sender,
System.Windows.Controls.SelectionChangedEventArgs e)
{
var test = (SectionData)listBox.SelectedItem; // Get Information on the Section
if (test.Line > 0 && test.Line <= TextBox1.LineCount) // Validate
{
TextBox1.ScrollToLine(test.Line - 1); // Scroll to Line
}
}
どうもありがとうSnowbear:
P.S:ここでは、あなたの添付の行動がどのように見えるべきかのサンプルです。前にACB以外の付随行動を使ったことはありませんでしたが、指導を受けて私はそれを手に入れて働きました。 – eandersson
@Fuji、添付されたビヘイビアは、MVVMコンセプトのビューとviewModelsをまとめるために非常に重要です。 ABが多くを助けるかもしれないこのような多くのケースがあります。 – Snowbear
スノーボード、もう一度感謝します。私のアプリケーションが拡大するにつれてこれが役立つより多くの状況があると確信しています。あなたのサンプルコードに新しいPropertyMetadataの中に新しいPropertyChangedCallbackがありませんでした。 @Fuji。 – eandersson