<?xml encoding=”UTF-8″>By Balaji Ramamoorthy
To have a RibbonTextBox automatically update your data when the user updates the ribbon textbox and vice-versa, you can use the RibbonTextBox.TextValueBinding to establish a 2-way databinding. Here is a sample code :
<span>public</span><span> <span>class</span><span> ManufacturerData </span></span>
: System.ComponentModel.INotifyPropertyChanged
<span>{</span>
<span>private</span><span> string manufacturerName;</span>
<span>public</span><span> ManufacturerData() <span>{</span> <span>}</span></span>
<span>public</span><span> ManufacturerData(String manufacturer)</span>
<span>{</span>
manufacturerName = manufacturer;
<span>}</span>
<span>public</span><span> String ManufacturerProperty</span>
<span>{</span>
get <span>{</span> <span>return</span><span> manufacturerName; <span>}</span></span>
set
<span>{</span>
manufacturerName = value;
OnPropertyChanged(<span>"ManufacturerProperty"</span><span> );</span>
<span>}</span>
<span>}</span>
<span>public</span><span> <span>event</span><span> </span></span>
System.ComponentModel.
PropertyChangedEventHandler PropertyChanged;
<span>private</span><span> <span>void</span><span> OnPropertyChanged(string info)</span></span>
<span>{</span>
System.ComponentModel.PropertyChangedEventHandler
handler = PropertyChanged;
<span>if</span><span> (handler != null)</span>
<span>{</span>
handler(<span>this</span><span> , <span>new</span><span> System.ComponentModel.</span></span>
PropertyChangedEventArgs(info));
<span>}</span>
<span>}</span>
<span>}</span>
<span>public</span><span> <span>class</span><span> Commands </span></span>
<span>{</span>
<span>public</span><span> <span>static</span><span> ManufacturerData _data </span></span>
= <span>new</span><span> ManufacturerData(<span>"Autodesk"</span><span> );</span></span>
<span>public</span><span> <span>static</span><span> <span>bool</span><span> _added = <span>false</span><span> ;</span></span></span></span>
[CommandMethod(<span>"RTB"</span><span> )]</span>
<span>static</span><span> <span>public</span><span> <span>void</span><span> RibbonTextBoxMethod()</span></span></span>
<span>{</span>
<span>if</span><span> (!_added)</span>
<span>{</span>
Autodesk.Windows.RibbonControl rc
= Autodesk.Windows.ComponentManager.Ribbon;
Autodesk.Windows.RibbonTab rt = null;
foreach (Autodesk.Windows.RibbonTab tab
in rc.Tabs)
<span>{</span>
<span>if</span><span> (tab.AutomationName.Equals(<span>"Add-ins"</span><span> ))</span></span>
<span>{</span>
rt = tab;
<span>break</span><span> ;</span>
<span>}</span>
<span>}</span>
<span>if</span><span> (rt == null)</span>
<span>return</span><span> ;</span>
Autodesk.Windows.RibbonPanelSource rps
= <span>new</span><span> Autodesk.Windows.RibbonPanelSource();</span>
rps.Title = <span>"MyPanel"</span><span> ;</span>
Autodesk.Windows.RibbonPanel rp
= <span>new</span><span> Autodesk.Windows.RibbonPanel();</span>
rp.Source = rps;
rt.Panels.Add(rp);
Autodesk.Windows.RibbonTextBox rtb
= <span>new</span><span> Autodesk.Windows.RibbonTextBox();</span>
rtb.Id = <span>"MyRTB"</span><span> ;</span>
rtb.Text = <span>"Manufacturer"</span><span> ;</span>
rtb.ShowText = <span>true</span><span> ;</span>
rps.Items.Add(rtb);
rt.IsActive = <span>true</span><span> ;</span>
System.Windows.Data.Binding myBinding
= <span>new</span><span> System.Windows.Data.Binding</span>
(<span>"ManufacturerProperty"</span><span> );</span>
myBinding.Source = _data;
myBinding.Mode
= System.Windows.Data.BindingMode.TwoWay;
rtb.TextValueBinding = myBinding;
_added = <span>true</span><span> ;</span>
<span>}</span>
<span>}</span>
<span>}</span>

Leave a Reply