Как связать активность кода формы с XAML? - PullRequest
0 голосов
/ 10 декабря 2011

Я пытаюсь создать библиотеку дизайнеров деятельности.У меня есть два источника;один из них - CodeActivity в коде C #, а другой - конструктор Activity в XAML.В CodeActivity у меня есть публичная собственность Name.В XAML я хочу просмотреть и изменить его значение с помощью привязки. Мой дизайн XAML выглядит следующим образом

Я объявил свойство Name следующим образом:

private string _name;
public string Name { 
    get { return _name; } 
    set 
    { 
        _name = value;
        NotifyPropertyChanged("Name");
    } 
}

public event PropertyChangedEventHandler PropertyChanged;

public void NotifyPropertyChanged(string propertyName)
{
    if (PropertyChanged != null)
    {
        PropertyChanged(this,
            new PropertyChangedEventArgs(propertyName));
    }
}

И мой XAML выглядит так:

...    
<DataTemplate x:Key="Expanded">
    <StackPanel>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="25"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="40"/>
                <ColumnDefinition Width="130"/>
            </Grid.ColumnDefinitions>

            <TextBox x:Name="txtName" Grid.Column="1" Grid.Row="0" Text="{Binding Name, Mode=TwoWay}"/>
            <TextBlock Grid.Column="0" Grid.Row="0" Text="Name :" HorizontalAlignment="Right"/>
        </Grid>
        <sap:WorkflowItemPresenter Item="{Binding Path=ModelItem.Body, Mode=TwoWay}"
                            HintText="Please drop an activity here" />
    </StackPanel>
</DataTemplate>

Я пробовал много способов, но я не мог этого сделать.Как я могу показать свойство Name из CodeActivity в XAML?

1 Ответ

1 голос
/ 12 декабря 2011

Я понял.Когда мы хотим связать переменную из стороны CodeActivity с XAML, мы делаем это следующим образом:

...
xmlns:s="clr-namespace:System;assembly=mscorlib"
<sap:ActivityDesigner.Resources>
    <sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" /> 
...
<sapv:ExpressionTextBox HintText="Enter custom text here ..." Expression="{Binding Path=ModelItem.Text, Mode=TwoWay, Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In}" ExpressionType="s:String" OwnerActivity="{Binding Path=ModelItem}" MaxLines="1"/>
...
...