Использование шаблона WPF в codebehind - PullRequest
0 голосов
/ 07 мая 2018

У меня есть этот шаблон:

    <DataTemplate x:Key="currencyColumn">
        <StackPanel Height="210" Margin="0,0,0,0" VerticalAlignment="Top" Width="64" ScrollViewer.VerticalScrollBarVisibility="Disabled">
            <Image Height="64" Source="assets/images/chaos.png"/>
            <TextBox x:Name="total" Height="24" TextWrapping="Wrap" Text="{Binding Total}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="48" FontSize="16" FontWeight="Bold" Margin="0,10,0,0" IsReadOnly="True"/>
            <TextBox x:Name="used" Height="24" TextWrapping="Wrap" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="48" FontWeight="Bold" FontSize="16" Margin="0,10,0,0"/>
            <TextBox x:Name="payed" Height="24" TextWrapping="Wrap" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="48" FontWeight="Bold" FontSize="16" Margin="0,10,0,0"/>
            <TextBox x:Name="owed" Height="24" TextWrapping="Wrap" Text="{Binding Owed}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="48" FontWeight="Bold" FontSize="16" Margin="0,10,0,0" IsReadOnly="True"/>
        </StackPanel>
    </DataTemplate>

То, что я хочу сделать, это добавить к ListBox неопределенное количество раз этот шаблон на runtime через codebehind, каждый с измененным источником изображения, и я хотел бы связать textbox с тегом readonly для некоторых переменных.

1 Ответ

0 голосов
/ 07 мая 2018

Я не вижу смысла связывать это с помощью кода, когда вы можете сделать это прямо в представлении (xaml).

Я полагаю, у вас есть определенная модель для отображения этих данных в вашем пользовательском интерфейсе:

public class MyModel
{
    public string ImageSource {get;set;}
    public double Total {get;set;} 
    public double Used {get;set;} 
    public double Paid {get;set;} 
    public double Owed {get;set;} 
}

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

using Prism.Mvvm;
public class MyVM : BindableBase
{
    public ObservableCollection<MyModel> MyModelCollection
    {
       get {return _myModelCollection;}
       set {SetProperty(ref _myModelCollection);}
    }
    private ObservableCollection<MyModel> _myModelCollection;
}

Наконец, в вашем представлении (xaml)

<ItemsControl ItemsSource="{Binding MyModelCollection, Mode=OneWay}"
              ItemTemplate="{StaticResource currencyColumn}">
</ItemsControl>

Здесь я использую ваш уже определенный DataTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...