Bir Mainwindow'da (Button1'den Button20'ye) 20 grafik düğmesi denetimi gösteren bir uygulama üzerinde çalışıyorum. Her düğme denetimi bir içerik dizesi görüntüleyebilir ve aşağıdaki gibi tasarlanmış bir araç ipucuna sahiptir :
<Button x:Name="button1" FontWeight="Bold" FontSize="15" Content="" HorizontalAlignment="Left" Margin="20,69,0,0" VerticalAlignment="Top" Width="92" Height="29" Click="Button_Click" Background="#FFFFFFFF" MouseEnter="button_MouseEnter">
<Button.ToolTip>
<Border Margin="-4,0,-4,-3" Padding="10" Background="Yellow">
<Border.BitmapEffect>
<OuterGlowBitmapEffect></OuterGlowBitmapEffect>
</Border.BitmapEffect>
<Label x:Name ="lbl1" FontSize="20" Content="{Binding Path=ToolTip}">
</Label>
</Border>
</Button.ToolTip>
<Button.Effect>
<DropShadowEffect/>
</Button.Effect>
</Button>
Bir XML dosyasındaki her düğme için dize içeriğini ve araç ipucu dizesini tanımlamak istiyorum, böylece bu bilgiler XML dosyasını değiştirerek değiştirilebilir.
Bunun için Bouton (fransızca) adlı bir nesneyi tanımlayan bir ViewModel oluşturdum. :
public class Bouton : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
void Notify(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
int boutonNumber;
public int BoutonNumber{ get { return boutonNumber; } set { boutonNumber= value; Notify("BoutonNumber"); } }
string texteBouton;
public string TexteBouton { get { return texteBouton; } set { texteBouton = value; Notify("TexteBouton"); } }
string tooltip;
public string Tooltip { get { return tooltip; } set { tooltip = value; Notify("ToolTip"); } }
public Bouton(int nb, string tb, string tt)
{
BoutonNumber = nb;
TexteBouton = tb;
Tooltip = tt;
}
}
XML dosyasını okurken, boutonNumber, Content ve Tooltip hakkında bilgi içeren Bouton türünde 20 nesne oluşturuyorum. Daha sonra tüm bu Bouton nesneleri bir Liste koleksiyonunda saklanır.
Şimdi, her düğmedeki içerik dizesini ve araç ipucu dizesini görüntüleyebilmek için Bouton listem ile mainwindow'umdaki grafik denetimleri arasında veri bağlamayı kullanmak istiyorum. Ana pencerede aşağıdaki kodu kullandım :
public MainWindow()
{
InitializeComponent();
List<Bouton> lst = Utilities.CreateList();
this.DataContext = lst;
}
burada lst bir liste koleksiyonu doğru başlatıldı.
Ancak veri bağlamanın Düğme denetimleri üzerinde nasıl çalışacağını bilmiyorum. 20 Düğme kontrolünün her birinin ilgili Bouton nesnesine (Boutons koleksiyonunda bulunan) doğru şekilde bağlanmasını nasıl sağlayabilirim ? Demek istediğim, Button1 denetimi dizelerini Bouton1 nesnemden, Button2 denetimi dizesini Bouton2 nesnesinden vb. Button20 denetimi ve Bouton20 nesnesine kadar nasıl alabilir ?
Yardımınız için teşekkür ederim. Lütfen wpf'ye yeni başladığımı ve bunun Visual Studio ile ilk WPF projem olduğunu unutmayın.