|
45 | 45 | <!-- Edit menu --> |
46 | 46 | <MenuItem Header="{sd:LocalizeString Edit, Context=Menu}"> |
47 | 47 | <MenuItem Header="{sd:LocalizeString Undo, Context=Menu}" |
48 | | - Command="{Binding Session.ActionHistory.UndoCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 48 | + Command="{Binding Session?.ActionHistory?.UndoCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
49 | 49 | HotKey="{x:Static gsvw:MainView.UndoGesture}" InputGesture="{Binding $self.HotKey, Mode=OneTime}"/> |
50 | 50 | <MenuItem Header="{sd:LocalizeString Redo, Context=Menu}" |
51 | | - Command="{Binding Session.ActionHistory.RedoCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 51 | + Command="{Binding Session?.ActionHistory?.RedoCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
52 | 52 | HotKey="{x:Static gsvw:MainView.RedoGesture}" InputGesture="{Binding $self.HotKey, Mode=OneTime}"/> |
53 | 53 | </MenuItem> |
54 | 54 | <!-- Help menu --> |
|
88 | 88 | BorderThickness="2" |
89 | 89 | BorderBrush="Red" |
90 | 90 | Padding="2" |
91 | | - DataContext="{Binding Session.EditorCollection}"/> |
| 91 | + DataContext="{Binding Session?.EditorCollection}"/> |
92 | 92 | <GridSplitter Grid.Column="1" ResizeDirection="Auto"/> |
93 | 93 | <Grid Grid.Column="2" |
94 | 94 | RowDefinitions="Auto, *"> |
95 | 95 | <StackPanel Grid.Row="0" |
96 | 96 | Orientation="Horizontal"> |
97 | 97 | <Button Content="{sd:LocalizeString Previous, Context=Button}" |
98 | | - Command="{Binding Session.PreviousSelectionCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 98 | + Command="{Binding Session?.PreviousSelectionCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
99 | 99 | HotKey="Alt+Left" ToolTip.Tip="{Binding $self.HotKey, Mode=OneTime}"/> |
100 | 100 | <Button Content="{sd:LocalizeString Next, Context=Button}" |
101 | | - Command="{Binding Session.NextSelectionCommand, FallbackValue={x:Static cpc:DisabledCommand.Instance}}" |
| 101 | + Command="{Binding Session?.NextSelectionCommand, TargetNullValue={x:Static cpc:DisabledCommand.Instance}}" |
102 | 102 | HotKey="Alt+Right" ToolTip.Tip="{Binding $self.HotKey, Mode=OneTime}"/> |
103 | 103 | </StackPanel> |
104 | 104 | <!-- Property Grid --> |
105 | 105 | <gsvw:PropertyGridView Grid.Row="1" |
106 | 106 | BorderThickness="2" |
107 | 107 | BorderBrush="Orange" |
108 | 108 | Padding="2" |
109 | | - DataContext="{Binding Session.ActiveProperties, FallbackValue={x:Null}}"/> |
| 109 | + DataContext="{Binding Session?.ActiveProperties}"/> |
110 | 110 | </Grid> |
111 | 111 | </Grid> |
112 | 112 | <GridSplitter Grid.Row="1" ResizeDirection="Auto"/> |
|
125 | 125 | <gsvw:AssetExplorerView BorderThickness="2" |
126 | 126 | BorderBrush="Blue" |
127 | 127 | Padding="2" |
128 | | - DataContext="{Binding Session.AssetCollection, FallbackValue={x:Null}}"/> |
| 128 | + DataContext="{Binding Session?.AssetCollection}"/> |
129 | 129 | </TabItem> |
130 | 130 | <TabItem Header="Asset errors"> |
131 | | - <caec:TextLogViewer LogMessages="{Binding Session.AssetLog.FilteredMessages, FallbackValue={x:Null}}"/> |
| 131 | + <caec:TextLogViewer LogMessages="{Binding Session?.AssetLog.FilteredMessages}"/> |
132 | 132 | </TabItem> |
133 | 133 | <TabItem Header="Output"> |
134 | 134 |
|
|
143 | 143 | Padding="2"/> |
144 | 144 | </TabItem> |
145 | 145 | <TabItem Header="Edit history"> |
146 | | - <ListBox ItemsSource="{Binding Session.ActionHistory.Transactions, FallbackValue={x:Null}}" |
| 146 | + <ListBox ItemsSource="{Binding Session?.ActionHistory?.Transactions}" |
147 | 147 | HorizontalAlignment="Stretch"> |
148 | 148 | <ListBox.ItemTemplate> |
149 | 149 | <DataTemplate DataType="caect:TransactionViewModel"> |
|
182 | 182 | <TextBlock Grid.Column="2" |
183 | 183 | Margin="8,0" |
184 | 184 | VerticalAlignment="Center"> |
185 | | - <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}}"/> |
186 | | - <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}}"/> |
| 185 | + <Run Text="{Binding Session?.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text={}{0} item, Plural={}{0} items, IsStringFormat=True, Context=StatusBar}}"/> |
| 186 | + <Run Text="{Binding Session?.AssetCollection.SelectedContent.Count, Mode=OneWay, Converter={sd:Localize Text=({0} selected), Plural=({0} selected), IsStringFormat=True, Context=StatusBar}}"/> |
187 | 187 | </TextBlock> |
188 | 188 | <Border Grid.Column="3" |
189 | 189 | Margin="2" |
|
193 | 193 | Margin="8,0" |
194 | 194 | HorizontalAlignment="Right" |
195 | 195 | VerticalAlignment="Center" |
196 | | - Text="{Binding Status.CurrentJob.Message, FallbackValue={x:Null}}"/> |
| 196 | + Text="{Binding Status.CurrentJob?.Message}"/> |
197 | 197 | <ProgressBar Grid.Column="5" |
198 | 198 | IsVisible="{Binding Status.CurrentJob, Converter={sd:ObjectToBool}}" |
199 | 199 | Margin="0,2" |
200 | 200 | VerticalAlignment="Stretch" |
201 | 201 | HorizontalAlignment="Left" |
202 | | - IsIndeterminate="{Binding Status.CurrentJob.IsIndeterminate, FallbackValue={x:Null}}" |
203 | | - Maximum="{Binding Status.CurrentJob.Total, FallbackValue={x:Null}}" |
204 | | - Value="{Binding Status.CurrentJob.Current, FallbackValue={x:Null}}"/> |
| 202 | + IsIndeterminate="{Binding Status.CurrentJob?.IsIndeterminate, TargetNullValue={sd:True}}" |
| 203 | + Maximum="{Binding Status.CurrentJob?.Total, TargetNullValue={sd:Double 0}}" |
| 204 | + Value="{Binding Status.CurrentJob?.Current, TargetNullValue={sd:Double 0}}"/> |
205 | 205 | </Grid> |
206 | 206 | </Grid> |
207 | | - |
208 | 207 | </UserControl> |
0 commit comments