2016-02-04 2 views
0

Мне было интересно, если в XAML, не касаясь модели представления, я мог бы сделать что-то вроде this или this, за исключением использования отношения другого имущества.WPF Установите значение свойства в отношение значения другого свойства

У меня есть кнопка управления с 2 эллипсами внутри, и я хочу, чтобы край одного из эллипсов менялся в зависимости от высоты другого.

Так что-то вроде:

<Ellipse Margin=.2*"{Binding ElementName=OtherEllipse, Path=Height}"/> 

ответ

0

MainWindow.xaml

<Window x:Class="MultiBindingConverterDemo.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:MultiBindingConverterDemo" 
    mc:Ignorable="d" 
    Title="MainWindow" Height="600" Width="800"> 
<StackPanel> 
    <StackPanel.Resources> 
     <local:MultiplyValueConverter x:Key="MultiplyValueConverter"/> 
    </StackPanel.Resources> 
    <Ellipse x:Name="OtherEllipse" Width="100" Height="50" Fill="Red"/> 
    <Ellipse Width="50" Height="50" Fill="Blue" 
      Margin="{Binding Path=Height, 
           ElementName=OtherEllipse, 
           Converter={StaticResource MultiplyValueConverter}, 
           ConverterParameter=0.2}"> 
    </Ellipse> 
</StackPanel> 

MainWindow.xaml.cs

using System; 
using System.Globalization; 
using System.Windows; 
using System.Windows.Data; 

namespace MultiBindingConverterDemo 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 

    public class MultiplyValueConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      double height = (double)value; 
      double multiplier = double.Parse((string)parameter); 
      return new Thickness(height * multiplier); 
     } 

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

Спасибо !! Я все еще не могу заставить его работать, возможно, это связано с тем, что он в стиле, но я над этим работаю! – azulBonnet

Смежные вопросы