ChangePropertyAction[uwp]上的Change IsChecked属性

ChangePropertyAction[uwp]上的Change IsChecked属性,uwp,uwp-xaml,ischecked,Uwp,Uwp Xaml,Ischecked,我需要使用ChangePropertyAction在XAML中单击一个简单按钮来更改单选按钮的IsChecked属性 我可以通过此方法更改单选按钮的每个属性(内容、可见性等),但IsChecked和它给出的未命名错误除外 <Button x:Name="button1"> <Interactivity:Interaction.Behaviors> <Core:EventTriggerBehavior EventName="Click" Sou

我需要使用ChangePropertyAction在XAML中单击一个简单按钮来更改单选按钮的IsChecked属性
我可以通过此方法更改单选按钮的每个属性(内容、可见性等),但IsChecked和它给出的未命名错误除外

<Button x:Name="button1">
    <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="Click" SourceObject="{Binding ElementName=button1}">
            <Core:ChangePropertyAction TargetObject="{Binding ElementName=radio1}" PropertyName="IsChecked" Value="false"/>
        </Core:EventTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
</Button>


请告诉我原因和解决办法好吗?谢谢。

问题似乎是由于这个原因,复选框ischecked属性是从其基类ToggleButton继承的。并且它的值可以为null(请参阅本文的详细信息)。这就是它报告如下异常的原因:

 <Grid>
    <Grid.Resources>
        <local:NullReaderConverter x:Name="myconverter"/>
        <x:Boolean x:Key="falsevalue">false</x:Boolean>
    </Grid.Resources>
    <RelativePanel>
        <CheckBox Content="test1" x:Name="radio1" IsChecked="True"></CheckBox>
        <Button x:Name="button1" Content="change" RelativePanel.Below="radio1">
            <Interactivity:Interaction.Behaviors>
                <Interactions:EventTriggerBehavior EventName="Click" SourceObject="{Binding ElementName=button1}">
                    <Interactions:ChangePropertyAction TargetObject="{Binding ElementName=radio1}" PropertyName="IsChecked" Value="{Binding Converter={StaticResource myconverter},Source={StaticResource falsevalue}}"/>
                </Interactions:EventTriggerBehavior>
            </Interactivity:Interaction.Behaviors>
        </Button>
    </RelativePanel>

</Grid>
Windows.UI.Xaml.Markup.XamlParseException:找不到与此错误代码关联的文本。 需要名称[行:1位置:175] 位于Windows.UI.Xaml.Markup.XamlReader.Load(字符串Xaml) 位于Microsoft.Xaml.Interactions.Core.TypeConverterHelper.Convert(字符串值,字符串目标TypeFullName)

要解决此问题,请尝试自己创建转换器:

 public class NullReaderConverter:IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}
然后在XAML上,尝试以下操作:

 <Grid>
    <Grid.Resources>
        <local:NullReaderConverter x:Name="myconverter"/>
        <x:Boolean x:Key="falsevalue">false</x:Boolean>
    </Grid.Resources>
    <RelativePanel>
        <CheckBox Content="test1" x:Name="radio1" IsChecked="True"></CheckBox>
        <Button x:Name="button1" Content="change" RelativePanel.Below="radio1">
            <Interactivity:Interaction.Behaviors>
                <Interactions:EventTriggerBehavior EventName="Click" SourceObject="{Binding ElementName=button1}">
                    <Interactions:ChangePropertyAction TargetObject="{Binding ElementName=radio1}" PropertyName="IsChecked" Value="{Binding Converter={StaticResource myconverter},Source={StaticResource falsevalue}}"/>
                </Interactions:EventTriggerBehavior>
            </Interactivity:Interaction.Behaviors>
        </Button>
    </RelativePanel>

</Grid>

假的