|
47 | 47 | <!-- Edit menu --> |
48 | 48 | <MenuItem Header="{sd:LocalizeString Edit, Context=Menu}"> |
49 | 49 | <MenuItem Header="{sd:LocalizeString Undo, Context=Menu}" |
50 | | - Command="{Binding Session.ActionHistory.UndoCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 50 | + Command="{Binding Session?.ActionHistory?.UndoCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
51 | 51 | HotKey="{x:Static gsvw:MainView.UndoGesture}" InputGesture="{Binding $self.HotKey, Mode=OneTime}"/> |
52 | 52 | <MenuItem Header="{sd:LocalizeString Redo, Context=Menu}" |
53 | | - Command="{Binding Session.ActionHistory.RedoCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 53 | + Command="{Binding Session?.ActionHistory?.RedoCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
54 | 54 | HotKey="{x:Static gsvw:MainView.RedoGesture}" InputGesture="{Binding $self.HotKey, Mode=OneTime}"/> |
55 | 55 | </MenuItem> |
56 | 56 | <!-- Help menu --> |
|
91 | 91 | BorderThickness="2" |
92 | 92 | BorderBrush="Red" |
93 | 93 | Padding="2" |
94 | | - DataContext="{Binding Session.EditorCollection}"/> |
| 94 | + DataContext="{Binding Session?.EditorCollection}"/> |
95 | 95 | <GridSplitter Grid.Column="1" ResizeDirection="Auto"/> |
96 | 96 | <Grid Grid.Column="2" |
97 | 97 | RowDefinitions="Auto, *"> |
98 | 98 | <StackPanel Grid.Row="0" |
99 | 99 | Orientation="Horizontal"> |
100 | 100 | <Button Content="{sd:LocalizeString Previous, Context=Button}" |
101 | | - Command="{Binding Session.PreviousSelectionCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 101 | + Command="{Binding Session?.PreviousSelectionCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
102 | 102 | HotKey="Alt+Left" ToolTip.Tip="{Binding $self.HotKey, Mode=OneTime}"/> |
103 | 103 | <Button Content="{sd:LocalizeString Next, Context=Button}" |
104 | | - Command="{Binding Session.NextSelectionCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 104 | + Command="{Binding Session?.NextSelectionCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
105 | 105 | HotKey="Alt+Right" ToolTip.Tip="{Binding $self.HotKey, Mode=OneTime}"/> |
106 | 106 | </StackPanel> |
107 | 107 | <!-- Property Grid --> |
108 | 108 | <gsvw:PropertyGridView Grid.Row="1" |
109 | 109 | BorderThickness="2" |
110 | 110 | BorderBrush="Orange" |
111 | 111 | Padding="2" |
112 | | - DataContext="{Binding Session.ActiveProperties, FallbackValue={x:Null}}"/> |
| 112 | + DataContext="{Binding Session?.ActiveProperties}"/> |
113 | 113 | </Grid> |
114 | 114 | </Grid> |
115 | 115 | <GridSplitter Grid.Row="1" ResizeDirection="Auto"/> |
|
128 | 128 | <gsvw:AssetExplorerView BorderThickness="2" |
129 | 129 | BorderBrush="Blue" |
130 | 130 | Padding="2" |
131 | | - DataContext="{Binding Session.AssetCollection, FallbackValue={x:Null}}"/> |
| 131 | + DataContext="{Binding Session?.AssetCollection}"/> |
132 | 132 | </TabItem> |
133 | 133 | <TabItem Header="Asset errors"> |
134 | | - <sd:TextLogViewer LogMessages="{Binding Session.AssetLog.FilteredMessages, FallbackValue={x:Null}}" |
| 134 | + <sd:TextLogViewer LogMessages="{Binding Session?.AssetLog.FilteredMessages}" |
135 | 135 | ShowDebugMessages="False" ShowVerboseMessages="False" ShowInfoMessages="False"/> |
136 | 136 | </TabItem> |
137 | 137 | <TabItem Header="Output"> |
|
147 | 147 | Padding="2"/> |
148 | 148 | </TabItem> |
149 | 149 | <TabItem Header="Edit history"> |
150 | | - <ListBox ItemsSource="{Binding Session.ActionHistory.Transactions, FallbackValue={x:Null}}" |
| 150 | + <ListBox ItemsSource="{Binding Session?.ActionHistory?.Transactions}" |
151 | 151 | HorizontalAlignment="Stretch"> |
152 | 152 | <ListBox.ItemTemplate> |
153 | 153 | <DataTemplate DataType="caect:TransactionViewModel"> |
|
224 | 224 | <TextBlock Grid.Column="2" |
225 | 225 | Margin="8,0" |
226 | 226 | VerticalAlignment="Center"> |
227 | | - <Run Text="{Binding Session.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text={}{0} item, Plural={}{0} items, IsStringFormat=True, Context=StatusBar}, FallbackValue={x:Null}}"/> |
228 | | - <Run Text="{Binding Session.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text=({0} selected), Plural=({0} selected), IsStringFormat=True, Context=StatusBar}, FallbackValue={x:Null}}"/> |
| 227 | + <Run Text="{Binding Session?.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text={}{0} item, Plural={}{0} items, IsStringFormat=True, Context=StatusBar}}"/> |
| 228 | + <Run Text="{Binding Session?.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text=({0} selected), Plural=({0} selected), IsStringFormat=True, Context=StatusBar}}"/> |
229 | 229 | </TextBlock> |
230 | 230 | <Border Grid.Column="3" |
231 | 231 | Margin="2" |
|
235 | 235 | Margin="8,0" |
236 | 236 | HorizontalAlignment="Right" |
237 | 237 | VerticalAlignment="Center" |
238 | | - Text="{Binding Status.CurrentJob.Message, FallbackValue={x:Null}}"/> |
| 238 | + Text="{Binding Status.CurrentJob?.Message}"/> |
239 | 239 | <ProgressBar Grid.Column="5" |
240 | 240 | IsVisible="{Binding Status.CurrentJob, Converter={sd:ObjectToBool}}" |
241 | 241 | Margin="0,2" |
242 | 242 | VerticalAlignment="Stretch" |
243 | 243 | HorizontalAlignment="Left" |
244 | | - IsIndeterminate="{Binding Status.CurrentJob.IsIndeterminate, FallbackValue={x:Null}}" |
245 | | - Maximum="{Binding Status.CurrentJob.Total, FallbackValue={x:Null}}" |
246 | | - Value="{Binding Status.CurrentJob.Current, FallbackValue={x:Null}}"/> |
| 244 | + IsIndeterminate="{Binding Status.CurrentJob?.IsIndeterminate, TargetNullValue={sd:True}}" |
| 245 | + Maximum="{Binding Status.CurrentJob?.Total, TargetNullValue={sd:Double 0}}" |
| 246 | + Value="{Binding Status.CurrentJob?.Current, TargetNullValue={sd:Double 0}}"/> |
247 | 247 | </Grid> |
248 | 248 | </Grid> |
249 | | - |
250 | 249 | </UserControl> |
0 commit comments