1

我正在使用 mvvm-light。我正在尝试使用一侧的命令按钮和另一侧的视图占位符创建应用程序。

当我尝试通过命令创建视图时,我得到了 ViewModel 的 ToString 名称。

例如:LU.ViewModel.ChannelsViewModel

我错过了什么?

这是我的代码:

主窗口

新频道

        <ContentControl x:Name="_placeholder"                               
                        x:FieldModifier="private"
                            Margin="16"
                            HorizontalContentAlignment="Center"
                            VerticalContentAlignment="Center"
                            Content="{Binding CurrentViewModel , Mode=OneWay}"/>

         </StackPanel>

资源:

主窗口中显示的 CustomerViewModel 类。-->

频道视图

<Grid Margin="4">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="6" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="30" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="30" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="30" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="30" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <Grid.Resources>
        <DataTemplate DataType="{x:Type ValidationError}">
            <TextBlock 
      FontStyle="Italic"
      Foreground="Red"
      HorizontalAlignment="Right"
      Margin="0,1"
      Text="{Binding Path=ErrorContent}" 
      />
        </DataTemplate>
    </Grid.Resources>

    <!-- NAME-->
    <Label 
  Grid.Row="0" Grid.Column="0" 
  Content="Name:" 
  HorizontalAlignment="Right"
  Target="{Binding ElementName=NameTxt}"
  />
    <TextBox 
  x:Name="NameTxt"
  Grid.Row="0" Grid.Column="2" 
  Text="{Binding ChannelName, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" 
  Validation.ErrorTemplate="{x:Null}"
  />
    <ContentPresenter 
  Grid.Row="1" Grid.Column="2"
  Content="{Binding ElementName=NameTxt, Path=(Validation.Errors).CurrentItem}"
  />

    <!-- IP-->
    <Label 
  Grid.Row="2" Grid.Column="0" 
  Content="IP:" 
  HorizontalAlignment="Right"
  Target="{Binding ElementName=IPTxt}" 
  />
    <TextBox 
  x:Name="IPTxt"
  Grid.Row="2" Grid.Column="2" 
  Text="{Binding IP, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
  Validation.ErrorTemplate="{x:Null}"
  />
    <ContentPresenter 
  Grid.Row="3" Grid.Column="2"
  Content="{Binding ElementName=IPTxt, Path=(Validation.Errors).CurrentItem}"
  />

    <!-- Control Port-->
    <Label 
  Grid.Row="4" Grid.Column="0" 
  Content="Control port:" 
  HorizontalAlignment="Right"
  Target="{Binding ElementName=controlPortTxt}" 
  />
    <TextBox 
  x:Name="controlPortTxt"
  Grid.Row="4" Grid.Column="2" 
  Text="{Binding ControlPort, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
  Validation.ErrorTemplate="{x:Null}"
  />
    <ContentPresenter 
  Grid.Row="5" Grid.Column="2"
  Content="{Binding ElementName=controlPortTxt, Path=(Validation.Errors).CurrentItem}"
  />

    <!-- data Port-->
    <Label 
  Grid.Row="6" Grid.Column="0" 
  Content="Data port:" 
  HorizontalAlignment="Right"
  Target="{Binding ElementName=dataPortTxt}" 
  />
    <TextBox 
  x:Name="dataPortTxt"
  Grid.Row="6" Grid.Column="2" 
  Text="{Binding DataPort, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
  Validation.ErrorTemplate="{x:Null}"
  />
    <ContentPresenter 
  Grid.Row="7" Grid.Column="2"
  Content="{Binding ElementName=dataPortTxt, Path=(Validation.Errors).CurrentItem}"
  />

    <!-- SAVE BUTTON -->
    <Button 
  Grid.Row="8" Grid.Column="2"
  Command="{Binding SaveCommand}"
  Content="_Save"
  HorizontalAlignment="Right"
  Margin="4,2" 
  MinWidth="60" 
  />
</Grid>


SVN 在我提交时总是出错(Subclipse)

我在我的服务器上设置了 svn,在家里设置了 Subclipse。我是唯一的开发人员,主要将其用于备份和版本控制功能。

每次我提交更改时,我都会得到八倍:

Out Of date errors

或者

Tree conflicts

有时我什至删除文件并且它们不会在 svn 上删除,在目录层次结构中,只有最后一项会删除,所以我必须一次删除每个文件夹。

以后如何避免这些错误?

更新: 我遇到的另一个问题是,有时 eclipse 似乎与服务器同步,因此当我重构文件名时,它会转到服务器并执行某些操作并让我等待,这很烦人。

为了清楚起见,这是一个典型的操作:我可能会更改文件名,将文件移动到不同的文件夹,然后更改文件的内容。我选择“团队菜单”并单击“提交”。然后我得到上面所有这些错误。

4

3 回答 3

2

这对我有用,但我不确定它是否是一个好习惯:

  <UserControl.Resources>
        <DataTemplate DataType="{x:Type vm:SimpleReflectionViewModel}">
            <view:SimpleReflecionView></view:SimpleReflecionView>
        </DataTemplate>
  </UserControl.Resources>

<ContentControl Margin="4,0,4,4" HorizontalAlignment="Center" VerticalAlignment="Bottom" Content="{Binding CurrentViewModel}" /> 

//CurrentViewModel 是 ViewModelBase 类型的属性

于 2010-07-21T19:24:59.570 回答
1

我遇到了同样的问题。我的问题是我的视图没有正确绑定到我的视图模型。

你必须确保你有这样的声明:

<DataTemplate DataType="{x:Type vma:InlineDepartmentsViewModel}">
    <va:InlineDepartmentsView/>
</DataTemplate>

它位于我的 MainSkin.xaml 中。还要确保在您的视图中,您也设置了绑定。

DataContext="{Binding InlineDepartments, Source={StaticResource Locator}}"

其中 InlineDepartments 将是您的视图定位器中的属性名称。

于 2011-12-22T00:01:13.060 回答
0

如果您使用复杂对象(例如:ViewModel)设置“内容”属性,您总是会得到它。

而不是将您的 ViewModel 绑定到“内容”,而是将其绑定到“DataContext”。

如果你真的想将它绑定到 Content 那么你将不得不绑定到你的 ViewModel 的一个属性,而不仅仅是 ViewModel 本身例如:

Content="{绑定 CurrentViewModel.SomeStringPropertyInMyVM , Mode=OneWay}"/>

于 2010-06-14T15:46:43.787 回答