Я просматриваю элементы своей базы данных и показываю стилизованные радиокнопки, а вот мой код:
public ObservableCollection<Product> products = new ObservableCollection<Product>(ProductsController.SelectAllProducts());
if (products.Count > 0)
{
foreach(var item in products)
{
SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush = (SolidColorBrush)(new BrushConverter().ConvertFrom("#004a80"));
RadioButton a = new RadioButton();
a.BorderThickness = new Thickness(1);
a.Background = Brushes.Green;
a.Foreground = new SolidColorBrush(Colors.Black);
a.BorderBrush = mySolidColorBrush;
a.Width = 118;
a.Height = 70;
a.Margin = new Thickness(5,0,0,5);
Style style = Application.Current.Resources["MyRadioButtonAsButtonStyle"] as Style;
a.Style = style;
a.ApplyTemplate();
a.Content = item.OrdinalNumber;
Image imgControl = (Image)a.Template.FindName("img", a);
Image imgControlWhite = (Image)a.Template.FindName("whiteImg", a);
TextBlock text = (TextBlock)a.Template.FindName("text", a);
a.Click += (object sender, RoutedEventArgs e) =>
{
var radioButton = sender as RadioButton;
MessageBox.Show(radioButton.Content.ToString());
};
text.Text = item.Title;
imgControl.Source = image;
spProducts.Children.Add(a);
}
}
В начале своего класса я получаю все продукты из Db, и я создал столько переключателей, сколько есть продуктов, и это выглядит так:
Если products.Count равно 8, мы увидим 8 переключателей, которые стилизованы под кнопки:
![enter image description here](https://i.stack.imgur.com/rBdSN.png)
Спустя какое-то время я хотел бы изменить цвет фона или заголовок на переключателе, но я не хотел бы обновлять sh весь экран, поэтому я добавил INotifyPropertyChanged
, а продукт - список типа Product
, который выглядит так:
public class Product : INotifyPropertyChanged
{
#region Attributes
private string _ordinalNumber;
private string _title;
private string _description;
#endregion
#region Properties
public string OrdinalNumber
{
get { return _ordinalNumber; }
set { _ordinalNumber = value; NotifyPropertyChanged("OrdinalNumber"); }
}
public string Title
{
get { return _title; }
set { _title = value; NotifyPropertyChanged("Title"); }
}
public string Description
{
get { return _description; }
set { _description = value; NotifyPropertyChanged("Description"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
И где-то в моем коде в том же файле я пытался изменить заголовок:
var dbProduct = ProductController.Instance.GetProductByTitle(title);
var listItem = products.FirstOrDefault(x => x.OrdinalNumber == dbProduct.OrdinalNumber);
listItem.Title = "Test";
Но ничего не произошло, я думал, так как products
был источником для создания переключателей, поэтому, если я изменю Title
какого-либо элемента в этом списке, это повлияет на переключатель на экране, поскольку я использую эту Title
опору, пока я показываю текст переключателя .
Любая помощь будет будь классным.