Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. WCF and WF
  4. Manually Updating GridViewColumn with DisplayMemberBinding binding set

Manually Updating GridViewColumn with DisplayMemberBinding binding set

Scheduled Pinned Locked Moved WCF and WF
questionwpfwcfannouncement
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    DvdKhl
    wrote on last edited by
    #1

    Hi, I have a ListView with a GridView like this:

    <GridView>
    <GridViewColumn Header="Type" Width="Auto"
    DisplayMemberBinding="{Binding Path=Type, Converter={StaticResource enumConverter}, Mode=OneWay}"/>
    <GridViewColumn Header="Optimal" Width="60"
    DisplayMemberBinding="{Binding Path=OptimalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>
    <GridViewColumn Header="Nominal" Width="60"
    DisplayMemberBinding="{Binding Path=NominalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>
    <GridViewColumn Header="Control" Width="100">
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <DockPanel>
    <Button DockPanel.Dock="Right" Content="Raise" Click="RaiseAttribute_Click"/>
    <!--<TextBox/>-->
    </DockPanel>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    </GridView>

    The only problematic column is:

    <GridViewColumn Header="Nominal" Width="60"
    DisplayMemberBinding="{Binding Path=NominalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>

    The NominalAttributeMass property is time dependent and always changes its value, so I can't implement INotifyPropertyChanged for it. Usually (when using a TextBlock) I just get the BindingExpression from the Control (with GetBindingExpression) and call UpdateTarget on it. But in this case there is no GetBindingExpression and the DisplayMemberBinding property is of the type BindingBase, where the function UpdateTarget doesn't exist. What is the proper way to Update the column?

    D 1 Reply Last reply
    0
    • D DvdKhl

      Hi, I have a ListView with a GridView like this:

      <GridView>
      <GridViewColumn Header="Type" Width="Auto"
      DisplayMemberBinding="{Binding Path=Type, Converter={StaticResource enumConverter}, Mode=OneWay}"/>
      <GridViewColumn Header="Optimal" Width="60"
      DisplayMemberBinding="{Binding Path=OptimalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>
      <GridViewColumn Header="Nominal" Width="60"
      DisplayMemberBinding="{Binding Path=NominalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>
      <GridViewColumn Header="Control" Width="100">
      <GridViewColumn.CellTemplate>
      <DataTemplate>
      <DockPanel>
      <Button DockPanel.Dock="Right" Content="Raise" Click="RaiseAttribute_Click"/>
      <!--<TextBox/>-->
      </DockPanel>
      </DataTemplate>
      </GridViewColumn.CellTemplate>
      </GridViewColumn>
      </GridView>

      The only problematic column is:

      <GridViewColumn Header="Nominal" Width="60"
      DisplayMemberBinding="{Binding Path=NominalAttributeMass, Mode=OneWay, Converter={StaticResource doubleConverter}}"/>

      The NominalAttributeMass property is time dependent and always changes its value, so I can't implement INotifyPropertyChanged for it. Usually (when using a TextBlock) I just get the BindingExpression from the Control (with GetBindingExpression) and call UpdateTarget on it. But in this case there is no GetBindingExpression and the DisplayMemberBinding property is of the type BindingBase, where the function UpdateTarget doesn't exist. What is the proper way to Update the column?

      D Offline
      D Offline
      Deepak VS
      wrote on last edited by
      #2

      One approach you can try is to define celltemplate for the column as shown below

      <GridViewColumn x:Name="gdcol">
      <GridViewColumn.CellTemplate>
      <DataTemplate>
      <TextBlock x:Name="txtbox" Text="{Binding Path}"/>
      </DataTemplate>
      </GridViewColumn.CellTemplate>
      </GridViewColumn>

      then in code where you want to update the target:

      object obj = gdcol.CellTemplate.LoadContent();
      TextBlock blk = obj as TextBlock;
      BindingExpression exp = BindingOperations.GetBindingExpression(blk, TextBlock.TextProperty);
      exp.UpdateTarget();

      I have not tried the code, you can give it a shot.

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups