私はListBoxに基づくユーザーコントロールを持っています。 DataTemplateはCanvasで表示または非表示にできます。 ユーザーがListBoxItemをクリックして(キャンバスを表示する) を選択し、別のクリックでキャンバスを非表示にする必要があります。ListBoxItemデータを項目IsSelectedプロパティで変更する
私は表示/ Aコンバータを使用するには、ListBoxItem IsSelectedに応じ
がどのように私は私のデータオブジェクト(デバイス)を変更することができます(下記参照デバイス)私のデータオブジェクトに応じてキャンバスを非表示にするには? (それは項目の間でトグルする必要がある= trueを選択し、偽=選択し、別のクリック)
おかげで、アビ
のDataTemplate:
<DataTemplate x:Key="ItemTemplate">
<StackPanel>
<TextBlock Text="{Binding Name}" FontSize="12" Margin="3"/>
<TextBlock Text="{Binding Location}" FontSize="10" Margin="1"/>
<Canvas x:Name="canvas1"
Visibility="{Binding SelectedToggle, Converter={StaticResource MYVisabilityConverter}}"
IsHitTestVisible="False" >
<Image Source="/Resources/Images/Bubble.png" Width="100"/>
</Canvas>
</StackPanel>
に結合するオブジェクトDataTemplate:
public class Device : Notifier
{
public Device()
{
}
public Device(string name)
{
this.Name = name;
}
private Point location;
/// <summary>
/// the device location
/// </summary>
public Point Location
{
get { return location; }
set { location = value; OnPropertyChanged("Location"); }
}
string name;
/// <summary>
/// the device Name
/// </summary>
public string Name
{
get { return name; }
set { name = value; OnPropertyChanged("Name"); }
}
bool selectedToggle = false;
/// <summary>
/// toggle between select and Un select of the device
/// </summary>
public bool SelectedToggle
{
get { return selectedToggle; }
set { selectedToggle = value; OnPropertyChanged("SelectedToggle"); }
}
}
こんにちはRachelさん、SelectedToggleをいくつかの方法で変更する必要があるので、この解決策には問題があります。私が考えることのできる場所はVisabilityConverterクラスですが、どのようにデバイスアイテムを渡すのですか? (私はListBoxItemを渡すことができます)。 – Avi
@Aviこれはあなたが投稿した 'DataTemplate'が' ListBoxItems'のものであると仮定しています。そうであれば、私の答えにStyleを使って 'ListBoxItem.IsSelected'を' ToggleSelected'にバインドすることができます。いつでも 'ListBoxItem'を選択すると' ToggleSelected'プロパティがトグルされます。 – Rachel