选中 ViewModel 上的复选框时,在 UserControl 上打开新选项卡
Open new Tabs on a UserControl while checking the Checkboxes on a ViewModel
我正在尝试在 MVVM 中制作一个程序,它可以读取 Excel 文件并将内容生成到 Word 文件中。现在,每次有人选择在复选框上创建一个 Word 文件时,我都坚持在 UserControl
上制作新的 Tab
s:
它应该在我的第二个 UserControl
上生成一个新选项卡,我试图从我的 ViewModel 生成一个名为 HauptfensterViewModel
.
视图模型中的代码如下所示:
protected void OnWeiterExecute(object obj)
{
OnDokumentChanged();
new VorschauViewModel(view);
if (Dokumenttyp[0] == true)
{
//TabItem auf VorschauWindow erstellen, mit jeweiligem Dokumentennamen(Angebotsvorlage)
}
if (Dokumenttyp[1] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Auditplan)
}
if (Dokumenttyp[2] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Checkliste)
}
if (Dokumenttyp[3] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Dokumentationsvorlage)
}
}
感谢您的帮助,如果有什么不明白的地方,我会尽力回答所有问题。
你可以尝试像下面例子这样的代码,这不是最好的解决方案,但它可以帮助你更多地了解 MVVM
.
视图模型:
public class HauptfensterViewModel : INotifyPropertyChanged
{
public static HauptfensterViewModel Instance { get; } = new HauptfensterViewModel();
private HauptfensterViewModel()
{
}
private bool _property1;
private bool _property2;
private bool _property3;
private bool _property4;
public bool Property1
{
get { return _property1; }
set
{
_property1 = value;
OnPropertyChanged();
}
}
public bool Property2
{
get { return _property2; }
set
{
_property2 = value;
OnPropertyChanged();
}
}
public bool Property3
{
get { return _property3; }
set
{
_property3 = value;
OnPropertyChanged();
}
}
public bool Property4
{
get { return _property4; }
set
{
_property4 = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
用户控件 1:
<CheckBox IsChecked="{Binding Property1}"/>
<CheckBox IsChecked="{Binding Property2}"/>
<CheckBox IsChecked="{Binding Property3}"/>
<CheckBox IsChecked="{Binding Property4}"/>
用户控件 2:
<TabControl HorizontalAlignment="Right">
<TabControl.Resources>
<BooleanToVisibilityConverter x:Key="ToVisibilityConverter"/>
</TabControl.Resources>
<TabItem Header="1" Visibility="{Binding Property1,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="2" Visibility="{Binding Property2,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="3" Visibility="{Binding Property3,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="4" Visibility="{Binding Property4,Converter={StaticResource ToVisibilityConverter}}"/>
</TabControl>
代码隐藏:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
DataContext = HauptfensterViewModel.Instance;
}
}
public partial class UserControl2 : UserControl
{
public UserControl2()
{
DataContext = HauptfensterViewModel.Instance;
}
}
我正在尝试在 MVVM 中制作一个程序,它可以读取 Excel 文件并将内容生成到 Word 文件中。现在,每次有人选择在复选框上创建一个 Word 文件时,我都坚持在 UserControl
上制作新的 Tab
s:
它应该在我的第二个 UserControl
上生成一个新选项卡,我试图从我的 ViewModel 生成一个名为 HauptfensterViewModel
.
视图模型中的代码如下所示:
protected void OnWeiterExecute(object obj)
{
OnDokumentChanged();
new VorschauViewModel(view);
if (Dokumenttyp[0] == true)
{
//TabItem auf VorschauWindow erstellen, mit jeweiligem Dokumentennamen(Angebotsvorlage)
}
if (Dokumenttyp[1] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Auditplan)
}
if (Dokumenttyp[2] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Checkliste)
}
if (Dokumenttyp[3] == true)
{
//TabItem auf VorschauWindow erstellen mit jeweiligem Dokumentennamen(Dokumentationsvorlage)
}
}
感谢您的帮助,如果有什么不明白的地方,我会尽力回答所有问题。
你可以尝试像下面例子这样的代码,这不是最好的解决方案,但它可以帮助你更多地了解 MVVM
.
视图模型:
public class HauptfensterViewModel : INotifyPropertyChanged
{
public static HauptfensterViewModel Instance { get; } = new HauptfensterViewModel();
private HauptfensterViewModel()
{
}
private bool _property1;
private bool _property2;
private bool _property3;
private bool _property4;
public bool Property1
{
get { return _property1; }
set
{
_property1 = value;
OnPropertyChanged();
}
}
public bool Property2
{
get { return _property2; }
set
{
_property2 = value;
OnPropertyChanged();
}
}
public bool Property3
{
get { return _property3; }
set
{
_property3 = value;
OnPropertyChanged();
}
}
public bool Property4
{
get { return _property4; }
set
{
_property4 = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
用户控件 1:
<CheckBox IsChecked="{Binding Property1}"/>
<CheckBox IsChecked="{Binding Property2}"/>
<CheckBox IsChecked="{Binding Property3}"/>
<CheckBox IsChecked="{Binding Property4}"/>
用户控件 2:
<TabControl HorizontalAlignment="Right">
<TabControl.Resources>
<BooleanToVisibilityConverter x:Key="ToVisibilityConverter"/>
</TabControl.Resources>
<TabItem Header="1" Visibility="{Binding Property1,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="2" Visibility="{Binding Property2,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="3" Visibility="{Binding Property3,Converter={StaticResource ToVisibilityConverter}}"/>
<TabItem Header="4" Visibility="{Binding Property4,Converter={StaticResource ToVisibilityConverter}}"/>
</TabControl>
代码隐藏:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
DataContext = HauptfensterViewModel.Instance;
}
}
public partial class UserControl2 : UserControl
{
public UserControl2()
{
DataContext = HauptfensterViewModel.Instance;
}
}