xmal中对属性的访问解决思路
xmal中对属性的访问wpf中,xaml部分的代码如何访问C#代码部分定义的属性?比如我有类:C# codeUserControl x
xmal中对属性的访问
wpf中,xaml部分的代码如何访问C#代码部分定义的属性?比如我有类:
C# code<UserControl x:Class="CardTest.Card" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:CardTest" xmlns:sys="clr-namespace:System;assembly=mscorlib" Height="100" Width="100" x:Name="control"> <Grid x:Name="GridMain" Background="Transparent"> </Grid></UserControl>
C# codepublic partial class Card : UserControl { public Card() { InitializeComponent(); } pubblic int IntValue = 100; }
我想在xaml中设置IntValue的值,如实现C#中IntValue = 150;或使用IntValue的值,如GridMain的Width属性为GridMain.Width = IntValue;
在xaml中应该如何实现呢?(我看了xaml中对属性的使用和设置,有直接使用和元素的方式使用两种方法,但是这里使用的时候属性都是声明的外层实例所具有的,比如:
<Grid>
<Grid.Width = "150"/>
</Grid>但是上面我想设置的属性是IntValue,明显不在UserControl中,我怎么设置呢?)
其实问题是发生在我写IValueConverter.Convert方法的时候,在xmal中写了如下形式的内容:
xxxx="{Binding ElementName=xxxx,Path=xxxx,Converter={StaticResource xxxx},Mode=OneWay}"
想实现一种绑定,但是在转换的时候,我想给Converter传递进去一个参数作为转换的依据(如上边所说的IntValue),我在论坛上看到说可以用ConverterParameter=xxxx往里传,但是我直接写ConverterParameter=IntValue之后在Convert的parameter参数得到的是一个"IntValue"字串,显然不是我需要的,我应该怎么做呢?
当然我可以在xaml中声明资源<sys:Int32 x:Key="IntVal">100</sys:Int32>,然后用ConverterParameter={StaticResource IntVal}的方法设定ConverterParameter的值,但是有时候我的字段不想声明在xaml中啊,那么我在xaml中如何设置C#代码中声明的属性(如在xaml中实现上述所说的IntValue = 150;这样C#中的代码)和使用设置在C#代码中的属性(如在xaml中实现Width = IntValue;这样的C#代码)呢?
可能我的想法不符合wpf的设计思想了,但是请问到底能不能在xaml中实现呢?非常感谢热心指教。
[解决办法]由于IntValue设置成了其基类MyUserControl的属性,所以可以在local:MyUserControl这个标签里进行设置。
而Card又继承了MyUserControl,所以也可以在其他文件中引用Card时设置IntValue属性。