Я сделал что-то при установке подключаемого модуля vestal_versions, что привело к созданию каталога vestal_versions в корне моего приложения со следующим текстом:
- Application
- APP
- DB
- vestal_versions
- ruby
- 1.8
- bin
- cache
- doc
- gems
- specifications
Что, если удалить, предотвращает приложение не работает ... Как мне обновить пакет, чтобы все это установить в нужное место, Ниже вы видите, как я их связал. Конечно, эта привязка не работает, потому что данные установлены в ...
Здравствуйте,
У меня есть 3 кнопки для добавления, удаления, открытия как RelayCommands в моем DocumentViewModel . Ниже вы видите, как я их связал. Конечно, эта привязка не работает, потому что данные установлены в ItemsSource из ListBox , а кнопки вне этого ...
Тогда я попытался установить DataContext в первой StackPanel, которую вы видите в моем фрагменте кода.
вот так:
НО тогда возникла новая проблема. .. теперь документы НЕ отображаются / не перечислены в ListBox: /
Как я могу заставить работать ОБЕИХ?
<StackPanel Orientation="Vertical" >
<ListBox
Height="100"
Width="Auto"
Focusable="True"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Grid.Row="1"
Name="itemListBox"
BorderThickness="1"
ItemsSource="{Binding DocumentViewModelList}"
>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<!-- xxx -->
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<Button Command="{Binding DeleteDocumentCommand}" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" Content="Delete" />
<Button Command="{Binding AddDocumentCommand}" HorizontalAlignment="Stretch" Content="Add" />
<Button Command="{Binding OpenDocumentCommand}" HorizontalAlignment="Stretch" Content="Open" />
</StackPanel>
</StackPanel>
ОБНОВЛЕНИЕ :
Я попробовал это :
<Button Command="{Binding Path=DeleteDocumentCommand, RelativeSource={RelativeSource AncestorType={x:Type DocumentViewModel}}}"
и получил это : ссылка на тип не может найти общедоступный тип с именем 'DocumentViewModel'
Я хотел бы придерживаться решения StackPanel DataContext и каким-то образом создать ListBox. ItemsSource захватывает DocumentViewModelList через привязку RelativeSource с FindAncestor. Я пробовал кое-что, но безуспешно, может быть, кто-нибудь сможет опубликовать хороший фрагмент :)
Хорошо, я нашел решение:
это обязывает к текущему DataContext, который является "DocumentViewModelList" круто!
ОБНОВЛЕНИЕ 2:
хорошо, есть еще одна проблема, может быть, если кто-то может предоставить решение по этому поводу, я помечаю эту ветку как решение тогда. Не хочу открывать новую ветку, потому что весь текст + фрагмент кода тот же ... Проблема теперь => Выбор 1-го документа активирует кнопку. Выбор любой другой кнопки не активирует кнопку, ПОЧЕМУ? Что не так с привязкой моего свойства IsSelected?
DocumentViewModel.cs:
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
if (_isSelected == value)
return;
_isSelected = value;
this.RaisePropertyChanged("IsSelected");
}
}
ОБНОВЛЕНИЕ 2:
Это код для включения кнопок: Что я не так? Я не получаю ошибок привязки в консоли вывода!?
private void DeleteDocument()
{
throw new NotImplementedException();
}
private bool CanDeleteDocument()
{
return (IsSelected == true);
}
private void AddDocument()
{
}
private void OpenDocument()
{
}
public RelayCommand DeleteDocumentCommand
{
get { return _deleteDocumentCommand ?? (_deleteDocumentCommand = new RelayCommand(() => DeleteDocument(), () => CanDeleteDocument())); }
}
public RelayCommand AddDocumentCommand
{
get { return _addDocumentCommand ?? (_addDocumentCommand = new RelayCommand(() => AddDocument())); }
}
public RelayCommand OpenDocumentCommand
{
get { return _openDocumentCommand ?? (_openDocumentCommand = new RelayCommand(() => OpenDocument())); }
}