WPF 工具包包上向导的 OnNext 事件
OnNext event for wizard on WPF toolkit package
我正在使用向导的 WPF 工具包包 class。
我想根据单选按钮的选择从一个页面跳转到另一个页面(如果单击是,则从第 3 页转到第 4 页,否则意味着单击“否”单选按钮,因此从第 3 页转到第 5 页)
我看到没有 OnNext 事件,但是有 属性 叫做 NextPage。
我试过:
On .xaml:
<xctk:WizardPage.NextPage>
<MultiBinding Converter="{StaticResource NextPageSelectionFromPage3}">
<Binding ElementName="yesForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="noForBAM" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</xctk:WizardPage.NextPage>
On .xaml.cs:
public class NextPageSelectionFromPage3 : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is bool && values[1] is bool)
if ((bool)values[0])
return "Page4";
return "Page5";
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
关于如何实现依赖 OnNext 事件有什么想法吗?
谢谢!
您的转换器的问题是您 return 字符串,而 NextPage 属性 是 WizardPage 类型。但是您可以使用纯 XAML 中的触发器来执行此操作,而无需转换器:
<xctk:WizardPage>
<xctk:WizardPage.Style>
<Style TargetType="{x:Type xctk:WizardPage}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=yesForBAM}" Value="True">
<Setter Property="NextPage" Value="{Binding ElementName=page4}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=noForBAM}" Value="True">
<Setter Property="NextPage" Value="{Binding ElementName=page5}" />
</DataTrigger>
</Style.Triggers>
</Style>
</xctk:WizardPage.Style>
<StackPanel Orientation="Vertical">
<TextBlock Text="3" />
<RadioButton Name="yesForBAM" Content="Show 4 page" IsChecked="True"/>
<RadioButton Name="noForBAM" Content="Do not show 4 page"/>
</StackPanel>
</xctk:WizardPage>
<xctk:WizardPage Name="page4">
<TextBlock Text="4" />
</xctk:WizardPage>
<xctk:WizardPage Name="page5">
<TextBlock Text="5" />
</xctk:WizardPage>
或使用转换器。主要思想仍然是您应该 return WizardPage,而不是字符串。
C#
public class NextPageSelectionFromPage3 : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is bool && values[1] is bool)
if ((bool)values[0])
return values[2];
return values[3];
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
XAML
<xctk:WizardPage.NextPage>
<MultiBinding Converter="{StaticResource NextPageSelectionFromPage3}">
<Binding ElementName="yesForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="noForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="page4" Mode="OneWay"/>
<Binding ElementName="page5" Mode="OneWay"/>
</MultiBinding>
</xctk:WizardPage.NextPage>
我正在使用向导的 WPF 工具包包 class。 我想根据单选按钮的选择从一个页面跳转到另一个页面(如果单击是,则从第 3 页转到第 4 页,否则意味着单击“否”单选按钮,因此从第 3 页转到第 5 页) 我看到没有 OnNext 事件,但是有 属性 叫做 NextPage。 我试过:
On .xaml:
<xctk:WizardPage.NextPage>
<MultiBinding Converter="{StaticResource NextPageSelectionFromPage3}">
<Binding ElementName="yesForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="noForBAM" Path="IsChecked" Mode="OneWay"/>
</MultiBinding>
</xctk:WizardPage.NextPage>
On .xaml.cs:
public class NextPageSelectionFromPage3 : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is bool && values[1] is bool)
if ((bool)values[0])
return "Page4";
return "Page5";
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
关于如何实现依赖 OnNext 事件有什么想法吗?
谢谢!
您的转换器的问题是您 return 字符串,而 NextPage 属性 是 WizardPage 类型。但是您可以使用纯 XAML 中的触发器来执行此操作,而无需转换器:
<xctk:WizardPage>
<xctk:WizardPage.Style>
<Style TargetType="{x:Type xctk:WizardPage}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=yesForBAM}" Value="True">
<Setter Property="NextPage" Value="{Binding ElementName=page4}" />
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=noForBAM}" Value="True">
<Setter Property="NextPage" Value="{Binding ElementName=page5}" />
</DataTrigger>
</Style.Triggers>
</Style>
</xctk:WizardPage.Style>
<StackPanel Orientation="Vertical">
<TextBlock Text="3" />
<RadioButton Name="yesForBAM" Content="Show 4 page" IsChecked="True"/>
<RadioButton Name="noForBAM" Content="Do not show 4 page"/>
</StackPanel>
</xctk:WizardPage>
<xctk:WizardPage Name="page4">
<TextBlock Text="4" />
</xctk:WizardPage>
<xctk:WizardPage Name="page5">
<TextBlock Text="5" />
</xctk:WizardPage>
或使用转换器。主要思想仍然是您应该 return WizardPage,而不是字符串。
C#
public class NextPageSelectionFromPage3 : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] is bool && values[1] is bool)
if ((bool)values[0])
return values[2];
return values[3];
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
XAML
<xctk:WizardPage.NextPage>
<MultiBinding Converter="{StaticResource NextPageSelectionFromPage3}">
<Binding ElementName="yesForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="noForBAM" Path="IsChecked" Mode="OneWay"/>
<Binding ElementName="page4" Mode="OneWay"/>
<Binding ElementName="page5" Mode="OneWay"/>
</MultiBinding>
</xctk:WizardPage.NextPage>