---
# System prepended metadata

title: 'Issue fix: ItemControl綁定後，額外產生一個空白項'
tags: [Issue fix, C#, MVVM, WPF]

---

# Issue fix: ItemControl綁定後，額外產生一個空白項


今天遇到一個問題，將ItemsControl的ItemSource綁定到ObservableCollection\<T\>後，不知道為什麼，總是會在最後面多出一個空白的項目，ViewModel明明就找不到那項，但詭異的就是會自己生出那項

```xml=
<ItemsControl ItemsSource="{Binding Pictures}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Rows="{Binding RowsCount}" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="Title: " />
                <TexeBlock Text="{binding Title}" />
            </StackPanel>            
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
```

找了很久，還一直以為是前面再改什麼東西改到了，但好像都不是，最後發現是DataGrid在搞鬼
原來是因為我圖方便，把Pictures綁定到兩個地方，另一個地方就是一個DataGrid，DataGrid特別的地方在於有個可以讓使用者新增資料的功能，預設是開啟的。

還以為DataGrid只是在UI新增一行，沒想到其實是在ViewModel上動手腳...

```xml
<DataGrid ItemSource="{Binding Pictures}"/>
```

兩個解法
1. 綁定到不同物件
2. 讓使用者不能在DataGrid上直接添加資料
    改成
    ```xml
    <DataGrid ItemSource="{Binding Pictures}" CanUserAddRows="False"/>
    ```

###### tags: `C#` `WPF` `Issue fix` `MVVM`