wpf中一个绑定表达式求解

liuys00 2013-05-21 05:34:31
<Grid Name="grid" Margin="0">
<myshapes:Line x:Name="line" X1="0" Y1="15"
X2="90" Y2="{Binding RelativeSource={RelativeSource Self}, Path=Y1}"
StrokeThickness="4.0" ShowArrow="True" Stroke="Blue" >
</myshapes:Line>
</Grid>

希望line的y1绑定到grid的实际高度的一半
x2绑定到grid的实际宽度-5
求绑定表达式
3ks
...全文
273 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuys00 2013-05-22
  • 打赏
  • 举报
回复
是我自己搞错了不好意思啊 我把整个grid作为value传入转换器,结果值为0了 应该把grid.ActivalHeight作为传入 结账
Bonjour-你好 2013-05-22
  • 打赏
  • 举报
回复
引用 3 楼 liuys00 的回复:
这个法子昨天试过了
但ActualHeight是0
所以效果不对


Bonjour-你好 2013-05-22
  • 打赏
  • 举报
回复
引用 3 楼 liuys00 的回复:
这个法子昨天试过了 但ActualHeight是0 所以效果不对
怎么我的有效果?
liuys00 2013-05-22
  • 打赏
  • 举报
回复
这个法子昨天试过了 但ActualHeight是0 所以效果不对
Bonjour-你好 2013-05-22
  • 打赏
  • 举报
回复
需要自行写转换器,首先添加转换器:

    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }

    /// <summary>
    /// y1绑定到grid的实际高度的一半
    /// </summary>
    public class Y1ToHeight : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double height = (double)value;
            return height / 2;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

    /// <summary>
    /// x2绑定到grid的实际宽度-5
    /// </summary>
    public class X2ToWidth : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            double width = (double)value;
            return width - 5;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
然后在 XAML 中添加对程序集的引用(根据你实际项目名称而不同):

xmlns:local="clr-namespace:WpfApplication1"
添加资源:

    <Window.Resources>
        <local:Y1ToHeight x:Key="Y1ToHeight"/>
        <local:X2ToWidth x:Key="X2ToWidth"/>
    </Window.Resources>
最后绑定(主要看Y1和X2的绑定就可以,Grid的Name自己改):

    <Grid x:Name="LayoutRoot">
        <Line x:Name="line"  X1="0" Y1="{Binding ElementName=LayoutRoot, Path=ActualHeight, Converter={StaticResource Y1ToHeight}}" X2="{Binding ElementName=LayoutRoot, Path=ActualWidth, Converter={StaticResource X2ToWidth}}" Y2="{Binding RelativeSource={RelativeSource Self}, Path=Y1}" StrokeThickness="4.0" Stroke="Blue"/>
    </Grid>
在路上20130607 2013-05-22
  • 打赏
  • 举报
回复
我在遇上这种问题的时候 是用convert 来完成的

8,758

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧