Флажок WPF MVVM - PullRequest
       5

Флажок WPF MVVM

0 голосов
/ 03 марта 2011

Привет всем, у меня есть проблема в этом коде, пожалуйста, помогите мне ..

У меня есть вид

<StackPanel Orientation="Horizontal" Margin="3">
            <Label Content="Audit Type" MinWidth="100"/>
            <Label Content=":"/>
            <StackPanel Orientation="Vertical">
                <ListBox ItemsSource="{Binding Items}" Margin="3" SelectionMode="Extended" MinWidth="180">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <CheckBox Name="check" Content="{Binding Value}" IsChecked="{Binding IsChecked, Mode=TwoWay}" Margin="3" VerticalAlignment="Center"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </StackPanel>
        </StackPanel>

и для модели View

private List<AuditTypeExport> _items;
private List<string> _value;
private bool _isChecked;

public bool IsChecked
    {
        get { return _isChecked; }
        set
        {
            _isChecked = value;
            OnPropertyChanged("IsChecked");
        }
    }

    public List<AuditTypeExport> Items
    {
        get { return _items; }
    }

    public List<string> Value
    {
        get { return _value; }
        set 
        { 
            _value = value;
            OnPropertyChanged("Value");
        }
    }

И ViewModel Constractor

_items = _model.GetAuditType();
_value = _model.GetAuditType().Select(item => item.Name).ToList();

Для вашей информации

public class AuditTypeExport
{
    private int _id;
    private string _name;

    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public string Name { get; set; }

Результат: флажок появляется, но содержимого нет, и я понятия не имею, почему.

Вопрос № 2: Я хочу вернуть значение, как я могу это сделать?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Здесь вы пытаетесь связать свойство типа List<String> Value со CheckBox Content свойством типа Object.

Для упрощения вы присваиваете строку набора строк. Что не очень хорошо. И именно поэтому он не работает.

Попробуйте использовать ItemsControl, чтобы отобразить свойство Value, или используйте IValueConverter, чтобы преобразовать List<String> в строку, разделенную запятыми.

0 голосов
/ 03 марта 2011

Неясно, как вы используете вашу ViewModel.Это связано с формой?Или каждый элемент в ListBox?

Похоже, ваш ListBox связан с коллекцией Items вашей виртуальной машины, поэтому ItemTemplate будет использоваться с AuditTypeExport в качестве контекста данных.Вы привязываетесь к свойствам «Значение» и «IsChecked», которые не существуют в классе AuditTypeExport.

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