質問編集履歴
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -311,3 +311,121 @@
|
|
311
311
|
Visual Studio 2019
|
312
312
|
|
313
313
|
.NET Framework 4.8
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
### 解決いたしました(以下、解決コード)
|
320
|
+
|
321
|
+
```C#
|
322
|
+
|
323
|
+
public class PersonTemplateSelector : DataTemplateSelector
|
324
|
+
|
325
|
+
{
|
326
|
+
|
327
|
+
public override DataTemplate SelectTemplate(object item, DependencyObject container)
|
328
|
+
|
329
|
+
{
|
330
|
+
|
331
|
+
ContentPresenter presenter = (ContentPresenter)container;
|
332
|
+
|
333
|
+
if (presenter.TemplatedParent is ComboBox)
|
334
|
+
|
335
|
+
return (DataTemplate)presenter.FindResource("SingleLine");
|
336
|
+
|
337
|
+
else
|
338
|
+
|
339
|
+
return (DataTemplate)presenter.FindResource("MultiLine");
|
340
|
+
|
341
|
+
}
|
342
|
+
|
343
|
+
}
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
```
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
上記クラスを追加しまして、
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
```XAML
|
356
|
+
|
357
|
+
<Window.Resources>
|
358
|
+
|
359
|
+
<DataTemplate x:Key="SingleLine">
|
360
|
+
|
361
|
+
<StackPanel Orientation="Horizontal">
|
362
|
+
|
363
|
+
<TextBlock Text="{Binding ID}"/>
|
364
|
+
|
365
|
+
<TextBlock Text="{Binding Name}" />
|
366
|
+
|
367
|
+
</StackPanel>
|
368
|
+
|
369
|
+
</DataTemplate>
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
<DataTemplate x:Key="MultiLine">
|
374
|
+
|
375
|
+
<Grid>
|
376
|
+
|
377
|
+
<Grid.RowDefinitions>
|
378
|
+
|
379
|
+
<RowDefinition Height="Auto" />
|
380
|
+
|
381
|
+
<RowDefinition Height="Auto" />
|
382
|
+
|
383
|
+
</Grid.RowDefinitions>
|
384
|
+
|
385
|
+
<Grid.ColumnDefinitions>
|
386
|
+
|
387
|
+
<ColumnDefinition Width="Auto" />
|
388
|
+
|
389
|
+
<ColumnDefinition Width="Auto" />
|
390
|
+
|
391
|
+
</Grid.ColumnDefinitions>
|
392
|
+
|
393
|
+
|
394
|
+
|
395
|
+
<TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding ID}"/>
|
396
|
+
|
397
|
+
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Name}" />
|
398
|
+
|
399
|
+
<TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding LeftData.Data1}" />
|
400
|
+
|
401
|
+
<TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding RightData.Data1}" />
|
402
|
+
|
403
|
+
</Grid>
|
404
|
+
|
405
|
+
</DataTemplate>
|
406
|
+
|
407
|
+
</Window.Resources>
|
408
|
+
|
409
|
+
```
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
リソースにDataTemplateを2つ用意し、
|
414
|
+
|
415
|
+
|
416
|
+
|
417
|
+
```XAML
|
418
|
+
|
419
|
+
<ComboBox ItemsSource="{Binding PersonList, ElementName=my}"
|
420
|
+
|
421
|
+
SelectedItem="{Binding SelectedPerson, ElementName=my}">
|
422
|
+
|
423
|
+
<ComboBox.ItemTemplateSelector>
|
424
|
+
|
425
|
+
<local:PersonTemplateSelector />
|
426
|
+
|
427
|
+
</ComboBox.ItemTemplateSelector>
|
428
|
+
|
429
|
+
</ComboBox>
|
430
|
+
|
431
|
+
```
|
1
説明の追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,6 +24,34 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
+
Personクラス内に下記プロパティをつくり、DisplayMemberPathプロパティにバインドした時は、
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
public string DispStr
|
32
|
+
|
33
|
+
{
|
34
|
+
|
35
|
+
get { return string.Format("{0}{1}", ID, Name); }
|
36
|
+
|
37
|
+
}
|
38
|
+
|
39
|
+
```
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
System.Windows.Markup.XamlParseException
|
44
|
+
|
45
|
+
InvalidOperationException: DisplayMemberPath と ItemTemplate を両方とも設定できません。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
というエラーでした。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
27
55
|
ComboBox.SelectionBoxItemTemplateというそれらしいプロパティがあるのですが、使い方がいまいち分からないです。
|
28
56
|
|
29
57
|
|