【发布时间】:2020-04-18 06:53:30
【问题描述】:
当用户单击按钮时,我正在尝试打印图像。第一次点击工作正常并打印图像,但其他点击没有按我预期的那样工作。即使我单击另一个按钮,也会显示第一个图像。例如,当我点击厨师时,它会打印正确的图像,然后我点击蔬菜,但它仍然显示厨师的图像。这段代码有什么问题?
public partial class MainWindow : Window, INotifyPropertyChanged
{
public ObservableCollection<string> selectedMenu = new ObservableCollection<string>();
public ObservableCollection<string> ChefsMenu = new ObservableCollection<string>();
public ObservableCollection<string> VegMenu = new ObservableCollection<string>();
public ObservableCollection<string> LowCMenu = new ObservableCollection<string>();
public ObservableCollection<string> orders = new ObservableCollection<string>();
private void ChefsButtonDown(object sender, MouseButtonEventArgs e)
{
chefFlag = true;
vegFlag = false;
lowFlag = false;
int len = ChefsMenu.Count;
for(int i = 0; i < len; i++)
{
selectedMenu.Add(ChefsMenu[i]);
}
ShowPanel.ItemsSource = null;
ShowPanel.Items.Refresh();
ShowPanel.ItemsSource = selectedMenu;
}
private void VegButtonDown(object sender, MouseButtonEventArgs e)
{
chefFlag = false;
vegFlag = true;
lowFlag = false;
int len = VegMenu.Count;
for (int i = 0; i < len; i++)
{
selectedMenu.Add(VegMenu[i]);
}
ShowPanel.ItemsSource = null;
ShowPanel.Items.Refresh();
ShowPanel.ItemsSource = selectedMenu;
}
private void LowCButtonDown(object sender, MouseButtonEventArgs e)
{
chefFlag = false;
vegFlag = false;
lowFlag = true;
int len = LowCMenu.Count;
for (int i = 0; i < len; i++)
{
selectedMenu.Add(LowCMenu[i]);
}
ShowPanel.ItemsSource = null;
ShowPanel.Items.Refresh();
ShowPanel.ItemsSource = selectedMenu;
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
XAML
<ItemsControl DockPanel.Dock="Left" Name="ShowPanel" ItemsSource ="{Binding Path=selectedMenu}" Width="690" Height="320">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="LightGreen" BorderThickness="0.5">
<TextBlock Text="{Binding Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" HorizontalAlignment="Left" Width="97" TextWrapping="Wrap"/>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
【问题讨论】:
标签: c# .net xaml user-interface