【问题标题】:Change IsChecked property on ChangePropertyAction [uwp]更改 ChangePropertyAction [uwp] 上的 IsChecked 属性
【发布时间】:2019-05-17 14:05:28
【问题描述】:

我需要使用 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>

请问是什么原因和解决方法?谢谢。

【问题讨论】:

    标签: uwp uwp-xaml ischecked


    【解决方案1】:

    问题似乎是因为这个,checkbox ischecked 属性是从它的基类 ToggleButton 继承的。它的值是 Nullable(参见 doc 的详细信息)。这就是为什么它会报告如下异常:

    Windows.UI.Xaml.Markup.XamlParseException:找不到与此错误代码关联的文本。 预期名称 [行:1 位置:175] 在 Windows.UI.Xaml.Markup.XamlReader.Load(字符串 xaml) 在 Microsoft.Xaml.Interactions.Core.TypeConverterHelper.Convert(字符串值,字符串 destinationTypeFullName)

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

     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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-29
      • 2021-09-18
      • 2012-07-17
      • 1970-01-01
      • 2014-02-11
      • 2013-02-11
      • 1970-01-01
      • 2018-07-21
      相关资源
      最近更新 更多