我正在尋找將組合框中的第一項設定為默認值的可能性。
我對組合框有我的看法(XAML):
<ComboBox ItemsSource="{Binding SiteScripts, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedValue="{Binding SelectedSiteScriptId}"
SelectedIndex="0" SelectedValuePath="Id"
DisplayMemberPath="Name" Background="AliceBlue"
Margin="5,10,10,540" Width="100" Height="50"/>
我從ItemsSource組合框屬性中的視圖模型系結到我的串列,我SelectedValue系結到ID屬性項:
public List<SiteCreateMachineScripts> SiteScripts
{
get { return _siteScripts; }
set
{
_siteScripts = value;
NotifyOfPropertyChange();
}
}
public int SelectedSiteScriptId
{
get { return _selectedSiteScriptId; }
set
{
_selectedSiteScriptId = value;
NotifyOfPropertyChange();
}
}
我已經嘗試過設定SelectedIndex = 0但是沒有用
感謝您的任何建議:)
uj5u.com熱心網友回復:
正如評論的那樣,您應該在 ViewModel 中做得更好。
從技術上講,您可以使用樣式和Load事件來設定SelectedIndex=0,此時Binding應該已經完成??從 ViewModel 設定值,您可以設定新值:
<ComboBox ItemsSource="{Binding SiteScripts, UpdateSourceTrigger=PropertyChanged}"
SelectedValue="{Binding SelectedSiteScriptId}"
SelectedValuePath="Id"
DisplayMemberPath="Name" Background="AliceBlue"
Margin="5,10,10,540" Width="100" Height="50"/>
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<Int32Animation Storyboard.TargetProperty="SelectedIndex" To="0"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
uj5u.com熱心網友回復:
默認選擇通用處理
public class ViewModel
{
public List<SiteCreateMachineScripts> SiteScripts
{
get { return _siteScripts; }
set
{
_siteScripts = value;
NotifyOfPropertyChange();
}
}
public int SelectedSiteScriptId
{
get { return _selectedSiteScriptId; }
set
{
_selectedSiteScriptId = value;
NotifyOfPropertyChange();
}
}
public ViewModel()
{
SiteScripts = GetList(); // init list
SelectedSiteScriptId = SiteScripts.First().Id;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378716.html
