首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

xmal中对属性的访问解决思路

2012-04-08 
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# code
public 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属性。

热点排行